在REST API中发出有关404错误的信号

时间:2014-08-10 09:31:32

标签: rest asp.net-web-api

告诉调用者API中的错误,特别是“未找到”错误的惯用方法是什么? 假设,我有一个网址/api/vi1/check/123。 如果

我应该返回什么
  1. id = 123没有这样的记录吗? 404错误(Http状态404)?

    状态:404(http);数据:{}

  2. 或者我应该返回OK状态(Http状态200) json的内部状态

    状态:200(http);数据:{状态:404,消息:“未找到”}?

  3. 并且(与 1 相关)如果没有这样的网址,我应该返回什么? 另外 Http 404状态?

  4. 是的,我已经看过最佳实践视频并阅读有关REST API的文章,但这些问题没有得到明确解答。

3 个答案:

答案 0 :(得分:2)

REST是关于使用HTTP的语义。它也适用于错误代码。您应该使用404状态代码,并最终在正文中使用更具描述性的错误消息。

答案 1 :(得分:1)

是的,你应该返回一个简单的404,不多也不少。 (也许是一条消息......)这表明你所寻找的资源并不存在于REST中的良好实践。

答案 2 :(得分:-1)

最好不要在这里提供任何正文(如内部状态代码或消息)。如果在这种情况下确实需要消息(错误时为404或500),则可以使用其他HTTP头字段(例如,X-Message:数据库不可用)来执行此操作。但是这里有一个空的响应体404就足够了。