代码之家  ›  专栏  ›  技术社区  ›  Victor

如果在发布子资源时资源不存在,那么在RESTAPI中使用哪个HTTP状态代码?

  •  0
  • Victor  · 技术社区  · 6 年前

    要在RESTAPI中为项目创建文档,

    POST /projects/1234/documents
    

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


    与…有关 this question 但要处理职位,而不是获取。

    1 回复  |  直到 6 年前
        1
  •  1
  •   VoiceOfUnreason    6 年前

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

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

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

    /projects/1234/documents 不是对路径遍历的描述,而是字典中的键。

    就HTTP而言,完全可以 /项目/1234/文档 即使存在 /projects /projects/1234 不要。

    稍微不同的是,响应中的元数据(包括状态代码)应用于 /项目/1234/文档 资源, 没有别的了 .

    注意这是双向的:不仅如此 /项目/1234/文档 /projects/1234/documents/5678

    Fielding's thesis RFC 7234