使用部分json更新api更新资源

时间:2016-11-15 01:10:19

标签: json rest patch put

想要了解设计REST API的良好实践

如果资源需要部分更新,哪个更好? PUT或PATCH

如果我的理解是正确的,请提供建议

发布 - 以2地址

来保留客户
{"custId":"1", "name":"Rocky", 
"address":[{"id":"1","zip":"1234"}, 
{"id":"2","zip":"12345"}]
}

现在更新地址ID 1

的邮政编码

PUT - 是否需要将完整的JSON发送到REST API?

{"custId":"1", "name":"Rocky", 
"address":[{"id":"1","zip":"9876"}, 
{"id":"2","zip":"12345"}]
}

PATCH - 可以将部分(或完整)JSON发送到REST API吗?

{"custId":"1", "name":"Rocky", 
"address":[{"id":"1","zip":"9876"}]
}

1 个答案:

答案 0 :(得分:1)

你的理解似乎基本上是正确的,但你的例子暗示了你思考中可能存在的问题。您正在谈论的文档实际上是一个拥有地址集合的客户。每个地址都可以看作是一个单独的文档,因为它有一个ID。因此,您的api应该允许您更新单个地址而无需更新客户。您的示例中缺少的是资源的URI。因此,您应该使用类似customer/1的内容来识别客户,并使用类似customer/1/address/1的内容来识别地址。