在Flask-RESTful
基于 API 中,我希望允许客户端通过参数部分检索 JSON 响应。?fields=...
它列出了字段名称(JSON 对象的键),这些名称将用于构造较大原始文件的部分表示。
这可能是最简单的形式,一个逗号分隔的列表:
GET /v1/foobar?fields=name,id,date
这可以通过 webargs 的DelimitedList模式字段轻松完成,对我来说没有问题。
但是,为了允许嵌套对象的键被表示,分隔的字段列表可以包括用匹配括号括起来的任意嵌套键:
GET /v1/foobar?fields=name,id,another(name,id),date
{
"name": "",
"id": "",
"another": {
"name": "",
"id": ""
},
"date": ""
}
GET /v1/foobar?fields=id,one(id,two(id,three(id),date)),date
{
"id": "",
"one": {
"id: "",
"two": {
"id": "",
"three": {
"id": ""
},
"date": ""
}
},
"date": ""
}
GET /v1/foobar?fields=just(me)
{
"just": {
"me: ""
}
}
我的问题有两个:
有没有办法用原生方式做到这一点(验证和反序列化
webargs
)marshmallow
?如果没有,我将如何使用解析框架来做到这一点
pyparsing
?任何关于 BNF 语法应该是什么样子的提示都非常感谢。