RESTAPI 404:错误的URI,还是缺少资源?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我正在构建RESTAPI,但遇到了一个问题。

在设计RESTAPI时,似乎公认的做法是,如果所请求的资源不存在,则返回404。

然而,对我来说,这增加了不必要的含糊不清。HTTP 404更传统地与坏URI相关联。所以实际上我们是说“要么你去对的地方,但那个特定的记录不存在,互联网上没有这样的位置!我真的不知道哪一个.

考虑以下URI:

http://mywebsite/api/user/13

如果我得到404,那是因为用户13不存在吗?还是因为我的URL一直是:

http://mywebsite/restapi/user/13

在过去,我只返回一个空结果HTTP 200 OK如果记录不存在,则响应代码。这很简单,在我看来非常干净,即使它不一定被接受。但是有更好的方法吗?

提问于
用户回答回答于

404只是HTTP响应代码。在此基础上,您可以为响应主体和/或其他标头提供更有意义的错误消息,开发人员将看到这些信息。

用户回答回答于

使用404如果资源不存在。别回来200一具空荡荡的尸体。

这类似于undefined与空字符串(例如:""**)在编程方面。虽然非常相似,但两者确实有区别。**

404意味着在该URI上不存在任何东西(就像编程中的未定义变量)。回归200空体意味着那里确实存在一些东西,而且现在某些东西只是空的(就像编程中的空字符串)。

404并不意味着它是个“坏URI”。有一些特殊的HTTP代码是针对URI错误的(例如,414 Request-URI Too Long)

扫码关注云+社区