修补多个资源

PATCH multiple resources

简短:是否符合标准,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"
    }
]

上下文是一个publicAPI的商业解决方案。允许此类 PATCHes 的好处是原子性和批处理友好性,无需垃圾邮件请求、单独处理故障等。

我已经咨询过 https://www.rfc-editor.org/rfc/rfc6902 and https://www.rfc-editor.org/rfc/rfc5789,但找不到确定的答案是否符合要求。 RFC 大多指的是“资源”,但也可以这样处理资源集合。

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

我喜欢这个主意。集合也是一种资源。所以对它采取行动是非常好的 REST。

您的 PATCH 请求的语义是请求正文中列出的 而非 的每个子资源都将保持原样。 列出的每个子资源都将按照描述进行更改。是的,这听起来不错。

只要请求的每一段都可以在一个请求中执行,我认为没有问题。您的 "all in one" 请求和像这样的单个请求都可以。

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