响应 PATCH 请求

Response to a PATCH request

假设我有一个端点 /api/todos 并且我发出 PATCH 请求来更改其中一个待办事项。我的 PATCH 请求在响应正文中包含所有待办事项列表是否有意义?

是否有任何我可以阅读的规范?

我已经与一些开发人员交谈过,普遍的共识是 PATCH 方法应该只 return 更改的条目。我同意这一点,但正在寻找详细说明这一点的文档。

RFC 是 here

但它并没有真正指定任何内容。这是一个例子:

   Successful PATCH response to existing text file:

   HTTP/1.1 204 No Content
   Content-Location: /file.txt
   ETag: "e0023aa4f"

   The 204 response code is used because the response does not carry a
   message body (which a response with the 200 code would have).  Note
   that other success codes could be used as well.

所以你可以随心所欲地实施它。仅响应更改后的条目会更符合其他方法(PUT、DELETE 等)通常的处理方式,所以我会这样做。

所以当你想提供一个 RESTfull 时 api /api/todos 表示一个资源,其中每个待办事项都有一个单独的 ID。在这里你会打补丁,例如到 `/api/todos/4' 以更新 ID 为 4 的待办事项。 这里通常的行为是使用 204 状态代码或更新的对象进行响应,以保存另一个请求以获取更新的待办事项。

如果您的待办事项不是具有 ID 的单独对象,它们可能是一个项目列表,应该一次性全部返回。

我喜欢将 Google API AIP 用于我的大部分 api 开发。

https://google.aip.dev/134

AIP 134 中关于更新和 PATCH 的小摘录。

  • 响应消息必须是资源本身。
  • 响应应该包含fully-populated资源,并且必须包含已发送并包含在更新中的任何字段掩码,除非它们仅作为输入(参见 AIP-203)。