PUT 或 PATCH 用于 hateoas 关系更新

PUT or PATCH for hateoas relation update

我想了解使用 spring hateoas 请求更新外键的最佳实践。

最好用:

Url: "http://host/entity1/{{entity1_id}}/entity2" 
Method: PUT    
Body: "http://host/entity2/{{entity2_id}}"
ContentType: "text/uri-list"

或者:

Url: "http://host/entity1/{{entity1_id}}"
Method: PATCH
Body: {"entity2": "http://host/entity2/{{entity2_id}}"}
ContentType: "application/json"

谢谢大家!

PUT是为了整个资源的幂等变化,所以你得把所有的资源数据都放上去。顶部替换一个资源你必须完全指定它的特性。

PATCH 允许部分资源更改,数据不完整。

如果你的entity2有更多的数据,除了一个link另一个实体,那么PACTH更适用于只改变外键。

参见HTTP Methods sepcification