我知道PUT和PATCH之间的区别。但是我正在努力在我的用例中哪个应该更合适。
我的应用程序中有大型窗体(嵌套窗体中的 50 多个窗体控件(和小窗体(一些窗体控件(。两种形式都允许编辑。我需要将更新的表单值发送到后端服务器。
我的犹豫是,如果我执行PUT请求,那么它将为大型表单创建巨大的有效负载,即使用户可能只编辑了这50个表单控件的一两个输入字段。因此,这听起来不是始终将整个实体发送到后端的好方法。但是,相反,如果我执行 PATCH 请求,那么我需要遍历所有这 50 个表单控件,并且只有那些值已更改的控件才会发送到后端。通过这种方式,可以最小化有效负载,但这对我来说听起来很笨拙或不优雅,因为我需要将"值更改检查"放入所有编辑表单中。
我搜索了过去的帖子并用谷歌搜索,但令人惊讶的是,由于他们示例中的形式简单,没有多少人谈论它或只是使用 PUT 请求。
我希望听到你的建议。提前谢谢你。
附言我在 Angular 7 中使用响应式表单,并且可以控制后端的 PUT 和 PATCH rest API。
大多数情况下,您应该使用 PUT -- 因为已知消息是幂等的,因此如果响应似乎已丢失,通用客户端可以重新发送请求。 使用PATCH,您不会得到这种保证。
异常通常如下所示:资源的表示形式比 HTTP 标头大得多(以字节为单位(,修补程序文档的表示形式比资源的表示形式小得多。
如果我使用 PUT,这意味着我也会将未修改的字段(在这种情况下为用户名、名称和年龄(发送到后端?
是的;您发送资源的完整表示形式。
它是否包括实体的唯一 ID?
如果资源的表示形式包含唯一标识符,那么是的,它应该是消息正文的一部分。
查看 PUT 方法令牌的规范可能会有所帮助
给定表示的成功 PUT 表明,对同一目标资源的后续 GET 将导致在 200(OK(响应中发送等效表示。