问题描述
所以我实际上并不喜欢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页面中)。
对于一台机器,这意味着放入您的模式定义的提示,以便机器可以区分这两种情况。