异常的建议JSON结构?

时间:2012-08-05 16:47:02

标签: json rest exception-handling

出于好奇,在返回JSON的API中是否有任何流行的标准用于返回服务器端异常(以及相应的详细信息)?例外情况可能是代码中未捕获的异常或开发人员抛出的抛出异常。

目前我正在根据Wiki definitions'

设置HTTP状态代码

我的JSON响应看起来像这样:

HTTP Code: 401

{'error': 'Authentication required.', 'message': 'You must be authenticated to perform that action.'}

4 个答案:

答案 0 :(得分:1)

本机ECMAScript错误对象的标准结构是:

{
    name: ...,
    message: ...
}

其中“name”是错误的类型(相应构造函数的名称,如“Error”,“SyntaxError”等)。在您的示例中,您可以使用名称“AuthentificationError”,例如。

答案 1 :(得分:1)

您可以查看JSON-RPC(http://en.wikipedia.org/wiki/JSON-RPC)。

如果成功,答案如下:

{
    "result": ...(returned data)...
    ...
}

如果出现错误,响应就是:

{
    "error": ...(error details)...
    ...
}

发生错误时,必须存在“error”属性,并且不得返回“result”属性。如果没有错误,则不能设置“error”属性。这样,您可以仅根据响应内容区分错误和成功响应,而无需检查标题(如响应代码)。

答案 2 :(得分:0)

是的,你也可以这样做。

我们知道Web服务器允许我们为HTTP错误创建自定义错误页面,在那些自定义错误页面中,您必须提供JSON回复

例:
将以下内容添加到WEB-INF / web.xml中:

<error-page>  
       <error-code>401</error-code>  
         <location>/autherror.jsp</location>  
</error-page>

在autherror.jsp文件中编写完成所需JSON回复所需的逻辑。

答案 3 :(得分:0)

尝试对发送的错误更加冗长。在某些地方建议使用此结构,以便为使用您的API的用户和开发人员提供足够的信息

"error":{
       "code":"410",
       "long":"410001",
       "message":"cannot connect to DB",
       "developer":"Connection to the DB was unsuccessful due to ...",
       "documentation": "mysite.com/help/errors/..."
   }
  1. 返回错误的正确HTTP代码。将代码200返回错误是不好的做法。

  2. 使用您自己的错误ID扩展代码

  3. 提供大致概述错误原因的简短消息。考虑为开发人员添加更详细的消息。请记住,API错误消息占开发人员99.9%的时间,因此通过提供技术细节(在合理范围内)使他们感到高兴,以便他们尽快解决。

  4. 如果您保留有关api和错误代码的公开文档,只需添加网址即可。