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.
一起使用
假设我有一个包含两个必填字段的模型:
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.
一起使用