让我们说我们有以下REST调用:
GET api/companies/5
(获取id为5的公司)
如果公司' 5'不存在,我们通常会返回404 Not Found
响应。
但是现在,让我们接听这个电话:
GET api/companies/5/invoices/10
(从公司5获得发票10)
现在,如果公司' 5'不存在,我们还会返回404 Not Found
吗?或者,如果无法找到最外层的资源(在这种情况下为发票10),则仅返回404。
Bad Request
可能是更好的选择吗?
答案 0 :(得分:25)
由于语法格式错误,服务器无法理解该请求。
然而,404表示:
服务器未找到与Request-URI匹配的任何内容。
整个URI是您的资源标识符,并且您没有找到该特定标识符的匹配资源。
答案 1 :(得分:0)
404可能会造成混乱-资源丢失还是实际URL错误?
我个人会使用422
代码:
The 422 (Unprocessable Entity) status code means the server
understands the content type of the request entity (hence a
415(Unsupported Media Type) status code is inappropriate), and the
syntax of the request entity is correct (thus a 400 (Bad Request)
status code is inappropriate) but was unable to process the contained
instructions. For example, this error condition may occur if an XML
request body contains well-formed (i.e., syntactically correct), but
semantically erroneous, XML instructions.