让我们考虑以下方法:
GET https://server.com/resource1/{id1}/resource2/{id2}/resource3/{id3}/target/{targetId}
所以基本上我们得到了一个target
。如果targetId
的目标不存在,我们会用404进行响应,这很好。但是以前的资源呢?
如果resource1
、resource2
、resource3
不存在怎么办?
又是404吗?或者它是400(但由于HTTP规范的原因,不完全适用(。或者甚至可能是424(因为依赖资源丢失(?
我知道可能不会有100%正确的答案。我还知道验证失败或无效重复的REST HTTP状态代码
如果/resource1/{id1}/resource2/{id2}/reresource3/{id3}/target/{targetId}标识的文档(资源(没有当前表示形式,则应返回404。
无论是因为基于id1的查找失败,还是基于id2的查找失败、基于id3的查找失败或基于targetId的查找失败而导致资源不存在,都无关紧要。
您可以将URI视为缓存键:这个拼写是否与具有当前表示形式的资源匹配?
如果要解释此特定问题,则可以使用响应的消息正文。但是状态码和报头是";通过网络传输文件";领域通用组件不关心我们的实现细节。