RESOURCE NOT FOUND (404) 何时合适?

Bel*_*lun 5 rest url httpresponse

我一直在与同事进行长时间的讨论,讨论针对 url 的不同错误部分是否使用 404 或 400(错误请求)进行响应。

假设我们有一个提供产品的端点。但产品是细分的,并且取决于国家、渠道(如 B2B 或 B2C)等。

在像这样的网址中

/myapi/v1/{国家}/{渠道}/产品/{产品 ID}

如果呼叫者给了我一个错误的“产品 ID”,我会很清楚地回复 RESOURCE NOT FOUND。

但“国家”呢?我认为“国家/地区”不是当前 url 提供的资源,因此响应(在提供的“国家/地区”不好的情况下)应该是 BAD REQUEST。其他人认为整个 url 就像资源的签名,错误的“国家/地区”将导致无法返回 200,因此 RESOURCE NOT FOUND 应该是响应状态。

哪一种状态是正确的?什么是正确的问题?

Eve*_*ert 5

这肯定仍然是 404。不要将 url 视为一长串参数,而是将 url 视为整个标识符。在您的特定示例中,标识符不指向任何内容,但它不是无效的网址。

404在这里最合适。