API通常要求资源的所有属性都在PUT请求的主体中,或者它们是否可选,以便更新属性的子集。
例如
resource = { "id": 1, "title": "Big Book", "desc": "...", "user_id": 2 }
我不希望user_id
或id
可更新,因此我只需在PUT中加入title
和desc
。我是否应该要求所有属性都包含在请求中或仅允许子集?
答案 0 :(得分:1)
使用REST,使用方法PUT
更新资源的完整表示(即所有内容)。因此,如果您只发送属性的子集,则应将缺少的属性设置为null。如果您只想更新属性的子集,则应使用方法PATCH
。
希望它可以帮到你, 亨利
答案 1 :(得分:0)
我可能只使用一个子集,只接收您要更新的属性:
PUT /book/1
并在体内
{ "title": "Big Book", "desc": "..." }
但您显然还需要验证参数并避免更新id(即使已通过)!
编辑:
正如@thierry templier所说,这是一种务实的方法,因为对于REST规范,您应该使用PATCH
进行部分更新,并使用PUT
进行完整更新。
如果您采用这种方式,请记住记录您的API。