REST API - 错误处理的最佳方法

时间:2011-11-24 03:01:11

标签: ajax api header http-response-codes

构建API响应时,哪种方法更适合(手动)返回状态代码以指示请求的有效性:

1 - 在JSON响应中嵌入响应代码

{
  'status_code' => 200,
  'status_message' => 'OK',
  'data' => { ... }
}

2 - 或者修改HTTP标头状态字段是否更好?

Request URL:http://somesite.com
Request Method:GET
Status Code: 200 (EDITING THIS ONE)

我认为HTTP状态只应该考虑服务器级别发生的连接错误和文件检索错误,而不是改变它以解决应用程序级错误。

任何好的文章和资源都会非常受欢迎。

2 个答案:

答案 0 :(得分:2)

我发现在REST请求中显示错误的最佳方法是将HTTP状态代码更改为正确的错误,并将错误嵌入到响应中。

如果您使用的是JSON,它可能如下所示,此示例的状态代码设置为500:

{"error" : "An error has occurred while trying to read from the database."}

这与Microsoft CRM uses to report errors的方法相同,并且它已被证明是一种好方法; RESTFul应用程序如果期望JSON(或XML,如果您正在使用它),将无法解析响应。

答案 1 :(得分:1)

This question解决了同样的问题(也许是从略微不同的角度来看)。

我认为,一般来说,如果对应用程序中的资源的请求导致错误情况,那么这个事实应该反映在HTTP标头中。您可以使用应用程序响应来提供更详细的信息。

更新Here是应用程序错误与状态代码(由Azure使用)的有趣映射。