【问题标题】:REST : Which action do I use for batch processing?REST :我使用哪个操作进行批处理?
【发布时间】:2014-03-06 06:13:32
【问题描述】:

我有一个可能包含一个或多个实体的 XML 文档。为了这个例子,假设这些实体是汽车。

现在,我将创建一个接受 XML 文件并执行创建、更新和删除操作的 REST 服务。我以为我会这样做:

HTTP POST to /service/car:创建列在 XML 文档中的汽车

HTTP PUT to /service/car:更新 XML 文档中列出的汽车

HTTP DELETE to /service/var:删除 XML 文档中列出的汽车

但是,我的印象是 PUT 和 DELETE 应该作用于代表特定实体的资源(URL)。也就是说,我可以针对 /service/car/10 调用 HTTP DELETE 来删除 10 号车。但是,HTTP/1.1 规范声明

PUT 方法请求将封闭的实体存储在 提供的 Request-URI

这意味着我不能简单地使用 PUT 来标记更新操作,我还应该将汽车 ID 添加到 URL。但是,我有多辆汽车需要批量更新。

我很想这样做:

HTTP POST 到 /service/car/create

HTTP POST 到 /service/car/update

HTTP POST 到 /service/car/delete

但是,有些事情告诉我,这并不是您使用 REST 做事的方式。

在这方面有什么“最佳实践”吗?

【问题讨论】:

    标签: http rest batch-processing


    【解决方案1】:

    我会将 XML 文档视为您正在“休息”的“命令”资源,而不是汽车。资源类型的语义是“cars-modification-command”。我会定义一个 URI /modifications/cars。 HTTP 答案将是一个可以查询命令结果的 URI 列表,例如新车的 URI。

    和“how to do I do complex queries in REST-style”类似的问题?我的答案是:将查询(或者在这种情况下:修改命令)作为您域的完整对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2021-10-17
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多