在REST API中,当我想更新实体的所有属性时,从良好实践的角度来看,最好使用什么? PUT
或PATCH
?如果最好使用PATCH
,为什么需要PUT
?两者之间有什么区别?
如果所有字段都被更新,那么两种操作都是幂等的,对吗?那么,有什么区别?
PUT
是幂等的,PATCH不是。 PUT为idempotent的事实意味着通用组件可以重复单个请求所需的次数足以产生响应。
PATCH,与POST一样,不保证等幂语义;因此,通用组件在可以自行执行的操作方面受到更严格的限制。
如果所有字段都已更新,那么两种操作都是幂等的,对吧?
通用组件将不了解是否更新了所有字段。这是一种高级启发式方法:通用组件了解HTTP标头的语义,但不一定了解消息正文的语义。