出于好奇,在返回JSON的API中是否有任何流行的标准用于返回服务器端异常(以及相应的详细信息)?例外情况可能是代码中未捕获的异常或开发人员抛出的抛出异常。
目前我正在根据Wiki definitions'
设置HTTP状态代码我的JSON响应看起来像这样:
HTTP Code: 401
{'error': 'Authentication required.', 'message': 'You must be authenticated to perform that action.'}
答案 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/..."
}
返回错误的正确HTTP代码。将代码200返回错误是不好的做法。
使用您自己的错误ID扩展代码
提供大致概述错误原因的简短消息。考虑为开发人员添加更详细的消息。请记住,API错误消息占开发人员99.9%的时间,因此通过提供技术细节(在合理范围内)使他们感到高兴,以便他们尽快解决。
如果您保留有关api和错误代码的公开文档,只需添加网址即可。