gpt4 book ai didi

rest - 创建多个已具有 ID 的资源时的 PUT 与 POST

转载 作者:可可西里 更新时间:2023-11-01 16:09:52 26 4
gpt4 key购买 nike

我正在构建一个 API,其中大多数端点接受并返回多个资源。我无法确定是使用 POST 还是 PUT 请求。

在我的情况下,资源总是使用 UUID 作为标识符在 API 之外创建和标识。由于资源已经存在并且已经确定,因此 PUT 请求似乎是合适的。但是,在 URI 中包含每个资源的 UUID 是不切实际的(UUID 很长,单个请求中可能有很多资源)。

POST 请求似乎也是合适的,因为即使资源已经用 ID 标识,它还不存在于我们的数据库中。此外,对于 POST 请求,不希望在 URI 中包含 ID。

在这种情况下,哪个是正确的 HTTP 动词?

 PUT /resources/1,2,3 ---> Impractical due to the number of resources per request  
PUT /resources ---------> More practical but lacks IDs in the URI
POST /resources ---------> Possibly inaccurate verb since resource is already identified

最佳答案

在我看来,您的三个选择是:

  1. 使用PUT/resources/1,然后是PUT/resources/2,然后是PUT/resources 3。这是“按设计”的方法。它确实会导致 3 次调用而不是 1 次,但让您可以利用使用 PUT 的好处。

  2. 使用POST/resourcesPOST 的正文包含所有上至服务器的资源的所有详细信息,包括 id。服务器可以从正文中的 id 创建资源。您失去了 PUT 的好处,但节省了有线流量。

  3. 使用 PATCH/resourcesPATCH 的主体包含要创建的资源的所有详细信息。这实际上只有在您使用 JSON 时才有效,因为 XML 的补丁语义充其量是不确定的。语义在 RFC 6902 中描述。 .

一般不建议对多个id进行一次请求。如果您调用 PUT/resources,从语义上讲,您是在用刚刚发送的正文替换 /resources 的内容,这不是您想要的.

我会建议第一种方法,除非您有充分的理由避免使用它(经过测试并且存在性能问题)。在那种情况下,我会认真考虑 PATCH 而不是 POST

关于rest - 创建多个已具有 ID 的资源时的 PUT 与 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com