首页 > 解决方案 > PUT 批量请求正文

问题描述

我想知道这样做的正确方法是什么:

我想更新列表中的一堆项目并将它们一次全部发送到服务器,而不是像 PUT 那样带有 id。这就是我要的:

请求正文:[{ oneKey:'一个值',anotherKey:'另一个值'},{ oneKey:'一个值'}]

我想用 PUT 把它发送到这个服务:mydomain/myservice 而不是像 mydomain/myservice/1 这样的东西

或者是其他东西?

标签: javascriptrestserviceresponseput

解决方案


我认为您的问题指出了在 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 都有一个状态标志。因此,状态是“成功”或“失败”。


推荐阅读