首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在一个请求中创建多个项目的RESTful方法

在一个请求中创建多个项目的RESTful方法
EN

Stack Overflow用户
提问于 2009-01-04 18:42:31
回答 6查看 92.9K关注 0票数 140

我正在开发一个小的客户端服务器程序来收集订单。我想以"REST(ful)方式“来做这件事。

我想做的是:

收集所有订单行(产品和数量),并将完整的订单发送到服务器

目前,我认为有两种方法可以做到这点:

  1. 将每个订单行发送到服务器: POST qty和product_id

我实际上不想这样做,因为我想限制对服务器的请求数量,所以选项2:

  1. 收集所有订单行,并立即将它们发送到服务器。

我应该如何实现选项2?我有两个想法:将所有订单行包装在一个JSON对象中,并将其发送到服务器,或者使用一个数组来发送订单行。

实现选项2是个好主意还是好做法?如果是,我应该怎么做?

什么是好的实践?

EN

回答 6

Stack Overflow用户

发布于 2015-11-18 06:20:25

我认为另一种正确的方法是创建另一个资源来表示您的资源集合。例如,假设我们有一个像/api/sheep/{id}这样的端点,我们可以通过POST到/api/sheep来创建一个sheep资源。

现在,如果我们想要支持批量创建,我们应该考虑在/api/flock (或者/api/<your-resource>-collection,如果你缺少一个更好的有意义的名字)上有一个新的集群资源。请记住,资源不需要映射到数据库或应用程序模型。这是一个常见的误解。

资源是一种更高级别的表示,与您的数据无关。对资源进行操作可能会产生显著的副作用,比如向用户发出警报、更新其他相关数据、启动长时间进程等。例如,我们可以将文件系统甚至unix ps命令映射为REST API。

我认为可以放心地假设,操作一个资源可能还意味着创建几个其他实体作为副作用。

票数 87
EN

Stack Overflow用户

发布于 2009-01-08 19:40:34

尽管批量操作(例如批处理创建)在许多系统中是必不可少的,但RESTful架构风格并没有正式处理它们。

我发现你建议的POSTing集合基本上可以工作,但是当你需要报告失败来响应这样的请求时,问题就出现了。当由于不同原因发生多个故障时,或者当服务器不支持事务时,此类问题会更加严重。我给你的建议是,如果没有性能问题,例如当服务提供商在LAN (不是WAN)上或数据相对较小时,向服务器发送100个POST请求是值得的。保持简单,从单独的请求开始,如果你有性能问题,试着优化。

票数 55
EN

Stack Overflow用户

发布于 2014-09-17 03:18:45

脸书解释了如何做到这一点:https://developers.facebook.com/docs/graph-api/making-multiple-requests

简单批处理请求

批处理API接受由JSON数组表示的逻辑HTTP请求数组--每个请求都有一个方法(对应于HTTP method GET/ PUT / POST /DELETE等)、一个relative_url (graph.facebook.com之后的URL部分)、可选的headers数组(对应于headers)和一个可选的主体(用于POST和PUT请求)。Batch API返回一个表示为JSON数组的逻辑HTTP响应数组-每个响应都有一个状态代码、一个可选的标头数组和一个可选的正文(这是一个JSON编码的字符串)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/411462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档