来自Google端点例外的自定义异常消息

时间:2015-06-06 19:32:52

标签: python google-app-engine google-cloud-endpoints google-cloud-platform

目前,我使用Python端点服务来更改用户名。如果没有问题,我会返回一个包含大量信息的MessageField。

但有时候,请求是正确的,我想告诉客户他可以处理的错误:"嘿,抱歉,但已经有一个名字的用户",或者, "嘿,对不起,但你今天已经更改了你的名字!"。

问题是,当我提出像UnauthorizedException或其他任何东西的端点异常时,我只能发出一条自定义消息:

raise endpoints.UnauthorizedException('Invalid user_id or auth_token !')

结果:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "required",
        "message": "Invalid user_id or auth_token !",
        "locationType": "header",
        "location": "Authorization"
      }
    ],
    "code": 401,
    "message": "Invalid user_id or auth_token !"
  }
}

有没有办法真正自定义此消息?或者在这种情况下返回一个完全不同的MessageField?

例如,我想返回这样的JSON(可能使用HTTP Code 400):

{
    "error": {
        "username_already_exist": 1
    }     
}

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您不想返回使用例外构建的JSON,则必须在代码中直接返回,而不是引发异常。您可以构建您提到的JSON,然后每当您点击"异常点"时返回它。

或者你可以做的是使用消息将错误发送到客户端,然后让客户端捕获该异常,适当地解析并显示你想要的任何内容。