出于好奇,在返回 JSON 的 API 中是否有任何流行的标准来返回服务器端异常(和相应的详细信息)?异常可以是代码中未捕获的异常或开发人员放置的抛出异常。
目前我正在根据他们的Wiki 定义设置 HTTP 状态代码
我的 JSON 响应看起来像这样:
HTTP Code: 401
{'error': 'Authentication required.', 'message': 'You must be authenticated to perform that action.'}
出于好奇,在返回 JSON 的 API 中是否有任何流行的标准来返回服务器端异常(和相应的详细信息)?异常可以是代码中未捕获的异常或开发人员放置的抛出异常。
目前我正在根据他们的Wiki 定义设置 HTTP 状态代码
我的 JSON 响应看起来像这样:
HTTP Code: 401
{'error': 'Authentication required.', 'message': 'You must be authenticated to perform that action.'}
本机 ECMAScript 错误对象的标准结构是:
{
name: ...,
message: ...
}
其中“name”是错误的类型(对应构造函数的名称,如“Error”、“SyntaxError”等)。例如,在您的示例中,您可以使用名称“AuthentificationError”。
您可以查看 JSON-RPC (http://en.wikipedia.org/wiki/JSON-RPC)。
在成功的情况下,响应是这样的:
{
"result": ...(returned data)...
...
}
如果出现错误,响应是这样的:
{
"error": ...(error details)...
...
}
发生错误时,必须存在“error”属性,并且不得返回“result”属性。如果没有错误,则不得设置“错误”属性。这样,您可以仅根据响应的内容来区分错误和成功的响应,而无需检查标头(如响应代码)。
是的,你也可以这样做。
正如我们所知,Web 服务器允许我们为 HTTP 错误创建自定义错误页面,在这些自定义错误页面中,您必须提供 JSON 回复
示例:
将以下内容添加到您的 WEB-INF/web.xml:
<error-page>
<error-code>401</error-code>
<location>/autherror.jsp</location>
</error-page>
在 autherror.jsp 文件中编码完成所需 JSON 回复所需的逻辑。
尝试对您发送的错误更详细一点。在某些地方建议使用此结构,以便为使用您的 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 和错误代码的公共文档,只需添加 url。