用于不存在的资源上的GET的REST标准

Lan*_*ali 8 rest

资源/ user/12345不存在.让我们说消费者正在随机尝试不同的ID.没有授权.任何用户都可以查看任何用户.从更广泛的意义上讲,我的问题是"如果您对不存在的资源进行GET,您应该返回什么?"

我应该为一个不存在的id返回一个空用户,还是应该返回一个包含正确状态代码的错误消息?

什么是典型/通常/推荐的做法?

Byr*_*ock 22

返回404状态代码.


sti*_*att 12

这取决于您的安全问题.如果guesser确定该用户id是否不存在,我会发送404,或者对/ user下任何资源的未经身份验证的访问发送401

  • 确定401或404,并坚持使用它,无论它们是否存在.您不希望黑客通过分析哪些ID返回哪个错误代码来找出哪些ID值得. (4认同)

egl*_*ius 6

404

也就是说,这假设您首先检查了对该操作的授权 - >/user/[id],如果用户不允许访问其他用户帐户,则返回401.

永远不要依赖用户不知道用户ID ...


Jim*_*ans 5

@Byron是对的,返回HTTP 404.您希望利用HTTP的所有功能,其中包括响应状态代码.因此,如果存在客户端错误,则返回4xx错误代码,如果您的服务器代码存在内部问题,则返回5xx错误代码等.

Richardson和Ruby的RESTful Web服务(O'Reilly)对此进行了很好的讨论,并附带了所有最重要的HTTP错误代码以及何时使用它们.