如何解决在静态中,如何在语义上区分有效URL返回的404和有效URL指向不存在的资源所返回的404?
所以我实际上并不喜欢RESTful API,但是在我受聘的地方,它们仍然使用很多。
假设您有一个端点GET v1/users/{id}
。
我该如何区分返回的404
GET /v1/users/0
和返回的那个
GET /v1/usres/1
? (故意打错)
解决方法
我该如何区分返回的404
响应正文,请参见RFC 7231
除响应HEAD请求外,服务器应发送表示形式,其中包含错误情况的说明以及错误情况是暂时的还是永久的情况。
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页面中)。
对于一台机器,这意味着放入您的模式定义的提示,以便机器可以区分这两种情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。