可以使用补丁而不是放置来进行完整更新吗?

Is it okay to use patch for full update instead of put?

我正在为 API 使用 Django 和 DRF。假设我有一个包含三个字段(名称、密码、电子邮件)的对象。当用户想要同时更新他的姓名、密码和电子邮件时,我可以发送 PATCH 请求而不是 PUT 请求吗?缺点是什么?

我觉得这比检查用户是否正在更新所有字段更方便,如果是,则使用 PUT 请求,如果不是,则使用 PATCH.

检查对象是否存在已经在后端处理,创建对象时,我使用CREATE / POST而不是PUT,因为它对我来说更方便。

编辑:我正在使用 AngularJS 的 PATCH: https://docs.angularjs.org/api/ng/service/$http#patch 将内容发送到后端,由 DRF Viewset 处理(处理 PATCH 个请求)。

用PATCH就可以了。但是,请注意,与 PUT 不同,它不会检查必填字段。

除非您使用已定义 PATCH 语义的媒体类型,否则不能使用 PATCH。 "application/json" 没有。

参见https://www.rfc-editor.org/errata_search.php?eid=3169

If the operation does not modify the resource identified by the Request-URI in a predictable way that's defined by the semantics of the PATCH media type, POST should be considered instead of PATCH or PUT.

FWIW,请参阅 RFC 6902 和 RFC 7386 了解您可以使用的类型。