“找不到物品”错误页面的最合适的HTTP状态码是什么?

我很好奇什么是“不存在”项目的最合适的HTTP状态码。

如果页面本身不存在,我显然会使用404.但是,我的一个页面有一个userid参数(这是一个“编辑用户”页面),如果没有给定用户ID的用户存在,我正在显示一个错误页面,但我也想发送一个4xx状态头(因为“200 OK”不适合)。

我猜404会好,因为它是“没有find”,而不是“找不到文件”,但我不知道是否有一个更好的代码为这种情况。

使用模糊的HTTP错误代码过于聪明是一个坏主意。 浏览器有时会以无益的方式做出反应,混淆形势。 坚持404。

404返回代码实际上意味着'资源未find',并且适用于任何请求被做出但未被满足的实体。 因此,对于页面,页面的子部分以及页面上存在的具有特定请求的任何项目,它同样适用。

所以404是在这种情况下使用的正确的代码。 请注意,它不适用于“服务器未find”,这是一个不同的情况下,发出请求,但根本没有回答,而不是回答,但没有请求的资源。

404就好了。 来自RFC2616的HTTP / 1.1状态码定义

这取决于如果用户标识符是资源标识符或附加参数。 如果是的话,可以返回404,如果不是,你可能会返回其他代码

400 (bad request) ‐ indicates a bad request
要么
412 (Precondition Failed) eg conflict by performing conditional update

更多信息在InfoQ中探索:REST书。