在休息时,在语义上如何区分无效 url 返回的 404 与指向不存在资源的良好 url 返回的 404?
In rest, semantically how to differentiate between 404 returned by a invalid url, vs a 404 returned by a good url pointing to non existen resource?
所以我实际上不是 RESTful API 的粉丝,但在我受雇的地方,它们仍然被大量使用。
所以我想出了一个显示我的困惑的假设案例:
假设您有一个端点 GET v1/users/{id}
。
现在假设此时只有一个用户,id 为 1
。
如何区分
返回的404
GET /v1/users/0
和
返回的那个
GET /v1/usres/1
? (故意打错字)
How do I differentiate between the 404 returned by....
响应正文,见HTTP Semantics
Except when responding to a HEAD request, the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition.
GET /v1/users/0
404 Not Found
Content-Type: text/plain
There is currently no user 0 in the database
GET /v1/usres/1
404 Not Found
Content-Type: text/plain
usres? What are you talking about?
Did you mean?
* /v1/users/1
* /v1/ursae/1
从通用组件(例如:浏览器或缓存)的角度来看,这两种情况完全没有区别。
但对于客户端(查看网页的人,或了解您的资源语义的机器组件)来说,想要与他们交流差异是合理的。
对于人类来说,这意味着将解释问题的文本返回到响应正文中(例如,在 html 页面中)。
对于机器来说,这意味着放入模式定义的提示,以便机器可以区分这两种情况。
所以我实际上不是 RESTful API 的粉丝,但在我受雇的地方,它们仍然被大量使用。
所以我想出了一个显示我的困惑的假设案例:
假设您有一个端点 GET v1/users/{id}
。
现在假设此时只有一个用户,id 为 1
。
如何区分
返回的404GET /v1/users/0
和
返回的那个GET /v1/usres/1
? (故意打错字)
How do I differentiate between the 404 returned by....
响应正文,见HTTP Semantics
Except when responding to a HEAD request, the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition.
GET /v1/users/0
404 Not Found
Content-Type: text/plain
There is currently no user 0 in the database
GET /v1/usres/1
404 Not Found
Content-Type: text/plain
usres? What are you talking about?
Did you mean?
* /v1/users/1
* /v1/ursae/1
从通用组件(例如:浏览器或缓存)的角度来看,这两种情况完全没有区别。
但对于客户端(查看网页的人,或了解您的资源语义的机器组件)来说,想要与他们交流差异是合理的。
对于人类来说,这意味着将解释问题的文本返回到响应正文中(例如,在 html 页面中)。
对于机器来说,这意味着放入模式定义的提示,以便机器可以区分这两种情况。