对 PATCH 请求的响应

A. *_*ong 7 rest api-design http django-rest-framework

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

有没有我可以阅读的规范?

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

Nic*_*ick 6

RFC 在这里

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

   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.
Run Code Online (Sandbox Code Playgroud)

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


小智 5

因此,当您想要提供一个 RESTfull api/api/todos表示一个资源时,每个待办事项都有一个单独的 id。在这里,您可以将例如修补到“/api/todos/4”,以更新 ID 为 4 的待办事项。这里通常的行为是使用 204 状态代码或更新后的对象来响应,以保存另一个请求以获取更新去做。

如果您的待办事项不是带有 id 的单独对象,它们可能是一个项目列表,并且应该立即返回。