2

我正在制作一个休息 api,我有一个问题,关于通常从不匹配的 get 中返回的内容。例如,如果我的资源是“用户”并且我使用

http方法:GET url:api.mysite.com/users/123

如果存在“123”,我将返回一个 http 代码 200,并在响应正文中包含用户的详细信息。我的问题是;我应该返回什么 http 代码,如果没有 id 为 123 的用户,我应该在响应正文中输入什么?

我应该只返回一个 200 的代码和一个空的正文吗?

4

2 回答 2

2

使用404,因为请求的资源(用户)不存在。

10.4.5 404 未找到

服务器没有找到任何与 Request-URI 匹配的东西。没有说明这种情况是暂时的还是永久性的。如果服务器通过一些内部可配置的机制知道旧资源永久不可用并且没有转发地址,则应该使用 410 (Gone) 状态代码。当服务器不希望确切地揭示请求被拒绝的原因或没有其他响应适用时,通常使用此状态代码。RFC 2616

于 2014-01-18T22:38:06.287 回答
1

作为您的 API,因此您可以返回任何您想要的内容,但是如果您谈到 HTTP 响应的标准,那么我建议您在这种情况下返回404 (NOT FOUND),这在这种情况下看起来更合适。因为您尝试访问的资源在该位置不可用。

404- Not Found意味着服务器没有找到任何匹配请求 URI 的东西。

使用状态码 404,您还可以为响应正文或任何其他有意义的标头提供适当的错误消息。这样客户就可以理解了。

于 2014-01-18T21:31:11.927 回答