在简单的 RESTful 设计中,PATCH 是否意味着映射到 CRUD(ORM)"update" 并将 PUT 映射到 "destroy"+"create"(以替换资源)?

In simple RESTful design, does PATCH imply mapping to CRUD's (ORM's) "update" and PUT to "destroy"+"create" (to replace a resource)?

我正在尝试创建一个简单的 REST API 并将其映射到 CRUD。我有一个 ORM (DataMapper),它有像 createupdatedestroy.

这样的方法

如果我做对了,给定资源 {a:'foo',b:'bar',c:'baz'},执行 PUT {b:'qux'} 应该会替换资源并产生相同的 {b:'qux'},然后执行 [=20] =] 应该导致 {a:'foo',b:'qux',c:'baz'}.

PUT 是否可以使用 ORM 的 destroy+create 来完全重新创建数据库记录( 具有相同的旧 ID)或PUTPATCH 都将映射到 update(并且只有记录的字段会被操作)?

a) PATCH 的作用取决于请求中的媒体类型。据我所知,application/json 没有定义,因此您需要在问题中澄清这一点。

b) PUT 和 PATCH 都是更新操作(如果资源尚不存在,则可选择创建)

好吧,这两个动作实际上都是更新的意思,其中PUT是完全更新,PATCH是部分更新。在 PUT 的情况下,您已经知道资源的标识符并且资源已经存在,因此它本身不是创建和删除操作。事实上,您可以只为您的资源提供 PUT 操作。 put 的唯一特点是客户端应该提供资源的完整表示。由于所有 put 请求都必须在资源的 GET 之后,因此提供完整的表示对于客户端来说应该不是问题。