当缺少必填字段时,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 Tracker和Github issues,这曾经被处理过。但是,似乎没有任何活动。
我非常感谢任何解决方案或解决方法。
答案 0 :(得分:0)
截至今天,ProtoRPC仍然返回相同的未提取错误,这使得人们更难以返回自定义错误响应。
一个简单的解决方法是使Message字段可选,并在端点处理程序/方法中的某处强制执行需求约束。
所以而不是;
class Request(Message):
name = StringField(1, required=True)
设置'名称'作为可选,
class Request(Message):
name = StringField(1)
然后,可以通过简单的if语句在端点处理程序方法中强制执行需求约束,或者通过将这些字段映射到需要这些字段的数据存储区实体,从而允许异常处理BadValueError并返回更自定义的错误响应。
示例:
try:
account = Account(name=request.name)
account.put()
except BadValueError:
return Response(status=False, message='Missing field "name"')