【问题标题】:PUT bulked request bodyPUT 批量请求正文
【发布时间】:2019-02-25 15:13:08
【问题描述】:
我想知道这样做的正确方法是什么:
我想更新列表中的一堆项目并将它们一次性发送到服务器,而不是像 PUT 那样带有 id。这就是我想要的:
请求正文:
[{ oneKey: '一个值', anotherKey: '另一个值' }, { oneKey: '一个值' }]
我想用 PUT 把它发送到这个服务:mydomain/myservice
而不是像 mydomain/myservice/1 这样的东西
- 响应值的正确形式是什么?
- 如果一切正常,我是否应该收到新的更新值?
- 如果一切正常,我是否应该收到新的更新值和其他未更新的值?
- 如果出现问题,我应该接收旧值吗?
还是别的什么?
【问题讨论】:
标签:
javascript
rest
service
response
put
【解决方案1】:
我认为您的问题指出了在 RESTful API 中不遵循 RESTful 风格所造成的摩擦。通常,您会为每个资源发送一个 PUT 请求,并为该特定资源的操作获取适当的响应。但有时候,事实证明并非总是最好的做事方式。所以,我看到这个问题有两种不同的解决方法。
选项 1
对于这些类型的批处理方案,您将有一个单独的 RPC 服务来处理这些请求。这是一个完全独立的过程,通常是一个 SOAP Web 服务,或者如果您想使用更新的方式来完成它,您可以查看grcp.io。非常有效,非常适合这种类型的请求。但是,由于您有另一个流程要处理,因此开销更大。
选项 2
使用您当前的 RESTfull API 并在 URI 中使用“_verb”段。这表示执行而不是资源。下划线是知道它不是资源的视觉提示。
例如:POST https://api.mydomain.com/sales/orders/_batchUpload
响应将是在您的场景中有意义的任何内容。我看到的一种方法是响应对象包含一个资源 ID 列表,每个资源 ID 都有一个状态标志。因此,状态是“成功”或“失败”。