在休息时,在语义上如何区分无效 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 页面中)。

对于机器来说,这意味着放入模式定义的提示,以便机器可以区分这两种情况。