1

当前,当缺少必填字段时,ProtoRPC 会返回如下消息:

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

是否可以提供更好的错误信息?理想情况下,此示例中的“缺少必填字段 api_key”。

根据Google Code Issue TrackerGithub 问题,这曾经正在处理中。但是,似乎没有任何活动。

我非常感谢任何解决方案或解决方法。

4

1 回答 1

0

截至今天,ProtoRPC 仍然返回相同的未引发错误,这使得返回自定义错误响应变得更加困难。

一个简单的解决方法是使 Message 字段可选,并在端点处理程序/方法的某处强制要求约束。

所以代替;

class Request(Message):
    name = StringField(1, required=True)

将“名称”设置为可选,

class Request(Message):
    name = StringField(1)

然后可以通过简单的 if 语句或通过将这些字段映射到需要这些字段的 Datastore 实体在端点处理程序方法中强制执行要求约束,因此将允许对 BadValueError 进行异常处理并返回更自定义的错误响应。

例子:

try:
    account = Account(name=request.name)
    account.put()
except BadValueError:
    return Response(status=False, message='Missing field "name"')
于 2016-05-30T11:35:08.350 回答