RESTful 'PATCH' 操作应该返回一些东西吗?

Ruf*_*ufi 7 rest resources patch web-services

我正在努力解决 PATCH 方法的最佳实践是什么。

我看到了几种可能性:

  1. 返回带有更新对象的 HTTP 状态代码200 OK
  2. 返回 HTTP 状态代码204 No Content

最好的是什么?

Rob*_*gam 6

规范指出

使用 204 响应代码是因为响应不携带消息正文(具有 200 代码的响应将具有消息正文)。请注意,也可以使用其他成功代码。

这仅仅意味着您可以决定是否返回正文,那么响应代码应该分别是200204。两者都不比另一个更好或更差。您可能会发现只返回更改的内容是很实用的,因此客户端不必发出新的请求来获取新的内容。

注意:使用PATCH是相当棘手的,因为您必须定义mime-type来将更改集应用到您的资源。这可能不是您想要的。通常情况下,PATCH只需创建一个本来应该是资源的新资源就可以解决这个问题。