简短:是否符合标准,RESTful和其他好主意,以启用PATCH请求来更新资源集合,而不仅仅是单个资源,但仍然是单独的?
长:
我正在考虑公开一种方法,用于对我的资源集合进行批量,原子更新。例如:
PATCH /url/myresources
[
{
"op": "add",
"path": "/1", // ID if the individual resource
"value":
{
... full resource representation ...
}
},
{
"op": "remove",
"path": "/2"
},
{
"op": "replace",
"path": "/3/name",
"value": "New name"
}
]
上下文是商业解决方案的公共API。允许这样的PATCH的好处是原子性和批量友好性,没有垃圾邮件请求,单独处理故障等。
我已咨询过https://tools.ietf.org/html/rfc6902和http://tools.ietf.org/html/rfc5789但如果符合要求则无法找到明确的答案。 RFC主要是指“资源”,但也可以将资源集合视为一种资源。
这是个好主意吗?还有更好的选择吗?
答案 0 :(得分:2)
我喜欢这个主意。集合也是一种资源。因此,采取行动是非常好的REST。
PATCH
请求的语义是请求体中列出的每个子资源不都保持不变。列出 的每个子资源都将按照描述进行更改。是的,这听起来不错。
只要请求的每个段都可以在一个请求中执行,我就看不出任何问题。你的“一体化”请求和这样的单个请求都可以。
PATCH /url/myresources/1
{
"op": "add",
"value":
{
... full resource representation ...
}
}