我正在使用Django和DRF进行API。假设我有一个包含三个字段的对象(名称,密码,电子邮件)。当用户想要同时更新其姓名,密码和电子邮件时,我可以发送PATCH
请求而不是PUT
请求吗?有什么垮台?
我觉得这比检查用户是否正在更新所有字段更方便,如果是,则使用PUT
请求,但如果他不是,则使用PATCH
。
检查对象是否存在已经在后端处理,并且在创建对象时,我使用CREATE / POST
而不是PUT
,因为它对我来说更方便。
编辑:我正在使用AngularJS的PATCH
:https://docs.angularjs.org/api/ng/service/ $ http#patch将内容发送到后端,后端由DRF Viewset处理(处理PATCH
个请求)。
答案 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了解您可以使用的类型。