我正在制作一个休息api,我有一个问题,关于通常从没有匹配的get返回的内容。例如,如果我的资源是“用户”,我用
进行api调用http方法:GET url:api.mysite.com/users/123
如果存在'123',我将返回一个200的http代码,其中包含响应正文中用户的详细信息。我的问题是;我应该返回什么http代码,如果没有id为123的用户,我应该在响应主体中放什么?
我应该只返回200的代码和空体吗?
答案 0 :(得分:2)
使用 404 ,因为请求的资源(用户)不存在。
10.4.5 404 Not Found
服务器未找到与Request-URI匹配的任何内容。没有 指示该条件是暂时的还是 常驻。如果服务器应该使用410(Gone)状态代码 通过一些内部可配置的机制,知道一个旧的 资源永久不可用,没有转发地址。 此状态代码通常在服务器不希望时使用 明确说明请求被拒绝的原因,或者没有其他请求 回复适用。 RFC 2616
答案 1 :(得分:1)
作为您的API,所以您可以返回任何您想要的内容,但如果您谈到HTTP响应的标准,那么我建议您在这种情况下返回404 (NOT FOUND)
看起来更合适。因为您尝试访问的资源在该位置不可用。
404- Not Found表示服务器未找到与Request-URI匹配的任何内容。
使用状态代码404,您还可以提供响应正文或任何其他有意义的标头以及正确的错误消息。这样客户就可以理解它。