endpoints-proto-datastore - 字段在 POST 上应该是必需的,但不是 GET

endpoints-proto-datastore - field should be required on POST but not GET

假设我有一个包含两个必填字段的模型:

class ExampleModel(EndpointsModel):
    attr1 = ndb.StringProperty(required=True)
    attr2 = ndb.StringProperty(required=True)

然后我想使用 endpoints-proto-datastore 查询 attr1 或 attr2:

@ExampleModel.query_method(query_fields=('attr1', 'attr2'),
                           path='example', name='list')
    def example_list(self, query):
        return query

如果我只提供其中一个字段,这将失败 - 来自 API Explorer,它是必填字段,但 API 本身 returns:

{
 "error": {
  "code": 400, 
  "errors": [
   {
    "domain": "global", 
    "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)", 
    "reason": "badRequest"
   }
  ], 
  "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)"
 }
}

显然我可以将它们标记为不需要,然后在应用程序代码中处理检查 - 但我想知道是否有人提出了更好的解决方案。

非常感谢

这是一个老问题,但我 运行 陷入了同样的困惑。 This 是我找到的答案。基本上,如果你想在 Post 上强制执行某项操作但没有得到,你需要制作一个自定义原型 class。只能与方法一起使用,不能与 query_method.

一起使用