6

简而言之:允许 PATCH 请求更新资源集合(不仅仅是单个资源,而是单独的资源)是否符合标准、RESTful 和其他好主意?

我正在考虑公开一种对我的资源集合启用批量、原子更新的方法。例子:

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://www.rfc-editor.org/rfc/rfc6902https://www.rfc-editor.org/rfc/rfc5789但如果这符合要求则找不到明确的答案。RFC 主要指的是“资源”,但也可以这样对待资源集合。

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

4

1 回答 1

2

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

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

只要请求的每个段都可以在单个请求中执行,我认为没有问题。您的“一体式”请求和这样的单个请求都可以。

PATCH /url/myresources/1
{
    "op": "add",
    "value": 
    {
        ... full resource representation ...
    }
}
于 2015-01-29T13:30:51.777 回答