在POST子资源时,如果资源不存在,在REST API中使用哪个HTTP状态代码?

时间:2018-06-09 00:44:07

标签: rest

要在REST API中为项目创建文档,

POST /projects/1234/documents

如果id = 1234的项目不存在,预计会返回什么状态?

this question相关,但处理的是POST,而不是GET。

1 个答案:

答案 0 :(得分:1)

简短回答:对于大多数与您描述的类似的用例,404。

更完整:“子资源”的概念在HTTP中并不存在。

是的,URI具有标准的分段层次结构,您可以使用点分段的相对分辨率来计算另一个URI。这些语义不会转化为资源层次结构。

/projects/1234/documents不是路径遍历的描述,它是字典的关键。

就HTTP而言,尽管/projects/1234/documents/projects没有/projects/1234,但/projects/1234/documents仍然存在。

略有不同,您的回复中的元数据(包括状态代码)适用于/projects/1234/documents资源,而不适用于任何其他

请注意,这是双向的:/projects/1234不仅不会暗示/projects/1234/documents/5678的任何内容,而且它也不会暗示{{1}}的任何内容。

你最好的参考仍然是Fielding's thesis。它也可能有助于审核RFC 7234