Python 来自google端点的自定义异常消息异常

Python 来自google端点的自定义异常消息异常,python,google-app-engine,google-cloud-endpoints,google-cloud-platform,Python,Google App Engine,Google Cloud Endpoints,Google Cloud Platform,目前,我有一个Python端点服务来更改用户的名称。如果没有问题,我将返回一个包含大量信息的MessageField 但有时,请求是正确的,我想对客户说,他可以处理一个错误:嘿,对不起,已经有一个同名用户,或者,嘿,对不起,今天您已经更改了名称 问题是,当我引发端点异常(如UnauthorizedException或其他任何异常)时,我可以只放置一条自定义消息: raise endpoints.UnauthorizedException('Invalid user_id or auth_toke

目前,我有一个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代码400:

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

谢谢

如果不想返回包含异常的JSON,则必须在代码中直接返回,而不是引发异常。您可以构建您提到的JSON,然后在遇到异常点时返回该JSON


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

我还想过返回其他消息类,或者构建自定义JSON或其他任何内容,但是,我认为这是不可能的:在Google SDK中有一个类,如果该方法返回的对象的类型与decorator中指定的类型不同,则会引发异常。您尝试过这样做吗?是的,您无法绕过调用的方法的返回类型。您必须调整您的方法,以便它们最终返回适合该方法的内容。无论如何,您仍然可以在客户端捕获错误