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

HTTP状态201已创建:是否将N个URL返回到新资源?

  •  7
  • guettli  · 技术社区  · 7 年前

    我有一个简单的服务器API:

    客户端可以上载文件。服务器返回 201 Created 如果成功的话。http响应具有 Location 指向新创建的资源的标头。

    现在我们面临一个新的用例:一个http请求应该能够创建N个新资源。

    我不确定如何根据http规范实现这一点。

    好吧,最多只有一个 地方 标题。

    如何在http中返回N个URL 201已创建 回答

    我的问题是相关的,但不是以下问题的重复,因为那里的问题明确回答为“否”。我的问题不同:如何。。。

    我的问题不是“是否允许返回多个位置标题?”。

    Can the Location header be used for multiple resource locations in a 201 Created response?

    2 回复  |  直到 7 年前
        1
  •  9
  •   Community leo1    3 年前

    你可以看看 rfc4918 ,它提出了一种新的响应类型207(多状态),简短描述从 REST & WOA Wiki :

    在多个状态代码可能合适的情况下,多状态响应传递有关多个资源的信息。默认的多状态响应主体是具有“multistatus”根元素的文本/xml或应用程序/xml HTTP实体。其他元素包含在方法调用期间生成的200、300、400和500系列状态代码。100系列状态代码不应记录在“响应”XML元素中。

        2
  •  5
  •   Community leo1    3 年前

    如何在http 201创建的响应中返回N个URL?

    简短回答:在消息正文中。

    更长的答案:

    我认为你的搜索有些倒退。

    在HTTP中;状态代码和响应标头为 元数据 ; 伴随着消息,为通用http组件提供了一种上下文无关的方式来理解发生了什么。

    一般来说,元数据是从数据中派生出来的。所以从有效载荷开始。

    如果是 201 CREATED 答复:

    201响应负载通常描述并链接到所创建的资源。

    第一步是创建此表示;在使用HTML的情况下,它看起来就像一个网页,上面写着“恭喜你,一切都好了”,还有一堆带有超链接的标记文本,为客户端提供了访问新资源的权限。

    已经完成 那个 ,您现在可以查看该表示,以查看应该将哪些信息提升到标准标题中,以便通用组件也可以了解一些情况。

    例如,请参见POST响应的描述

    如果由于成功处理POST请求而在源服务器上创建了一个或多个资源,则源服务器应发送201(已创建)响应,其中包含一个位置标头字段,该字段提供所创建的主资源的标识符(第7.1.2节)和一个描述请求状态的表示,同时引用新资源。

    因此,我们确定所创建的资源中 主要的,重要的 ,并将该资源的标识符从表示形式提升到位置标头中。

    辅助资源的标识符在消息正文中仍然可用。如果还需要将这些资源公开给通用组件,那么可以使用 Link header .