据我了解,如果完全遵循 HTTP 规范,如果您正在执行 PUT 命令,则需要传入资源的所有数据(无论它是否更改),而在执行 PATCH 命令时,您只需传入数据这正在改变。因此,如果我有一个要更改它的每个值的资源,那么 PUT 和 PATCH 命令将具有相同的请求,除了正在使用的 HTTP 动词。
从后端的角度来看,我发现很难找到一个可行的理由来为 PUT 和 PATCH 提供不同的功能。我现在正在构建的 REST API 支持这两种方法,但是它们指向相同的代码,并且代码实际上只是做了一个 PATCH,因为它不请求资源的所有数据,只是请求更改的数据。我想有一个非常好的理由必须为我的所有资源维护一个单独的 PUT 代码路径,因为这增加了代码维护。
当 PATCH 的代码也可以真正执行 PUT 时,是否有任何理由真正为 PUT 和 PATCH 提供不同的功能(除了您应该遵循规范,因为在这种情况下我认为这不是一个很好的理由)?
让 PUT 和 PATCH 只接受资源的更改数据列表是否被认为是不好的做法或可以接受?