是否可以使用补丁进行完全更新而不是放置?

时间:2017-03-04 23:58:38

标签: django http django-rest-framework patch put

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

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

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

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

2 个答案:

答案 0 :(得分:1)

使用PATCH是可以的。但请注意,它不会检查必需的字段而不是PUT。

答案 1 :(得分:0)

除非使用为PATCH定义语义的媒体类型,否则使用PATCH是不行的。 “application / json”没有。

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

  

如果操作没有修改由...标识的资源   Request-URI以可预测的方式由语义定义   在PATCH媒体类型中,应该考虑POST而不是   PATCH或PUT。

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