PATCH多个资源

时间:2015-01-29 09:52:46

标签: json rest http api-design http-patch

简短:是否符合标准,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/rfc6902http://tools.ietf.org/html/rfc5789但如果符合要求则无法找到明确的答案。 RFC主要是指“资源”,但也可以将资源集合视为一种资源。

这是个好主意吗?还有更好的选择吗?

1 个答案:

答案 0 :(得分:2)

我喜欢这个主意。集合也是一种资源。因此,采取行动是非常好的REST。

PATCH请求的语义是请求体中列出的每个子资源都保持不变。列出 的每个子资源都将按照描述进行更改。是的,这听起来不错。

只要请求的每个段都可以在一个请求中执行,我就看不出任何问题。你的“一体化”请求和这样的单个请求都可以。

PATCH /url/myresources/1
{
    "op": "add",
    "value": 
    {
        ... full resource representation ...
    }
}