对于Web服务,将多个服务呼叫分批处理为一条消息以减少多个远程呼叫被认为是一种好的做法。有没有什么办法可以用RESTful服务来做到这一点?批处理REST
批处理REST
回答
我不知道配料的要求如何使任何意义的REST。由于基于REST的服务中的URL代表要执行的操作以及执行该操作的数据,因此批量请求会严重破坏概念模型。
一个例外是,如果你是在同一个数据上多次执行相同的操作。在这种情况下,您可以为请求参数传入多个值或在主体中编码此重复值(但这只会对PUT或POST起作用)。所述Gliffy REST API支持经由
POST /folders/ROOT/the/folder/name/users?userId=56&userId=87&userId=45
其基本上添加多个用户在同一文件夹中:
PUT /folders/ROOT/the/folder/name/users/56
PUT /folders/ROOT/the/folder/name/users/87
PUT /folders/ROOT/the/folder/name/users/45
作为其它评论者指出的那样,从一个GET寻呼结果可以通过请求参数完成:
GET /some/list/of/resources?startIndex=10&pageSize=50
如果 REST服务支持它。
如果要创建一个GetBatch操作,该操作需要将参数,要执行的REST操作的集合及其参数作为参数。然后,可以返回一组结果,并通过与其相关的REST操作进行键控?这是否也会违反REST的概念模型? – crush 2014-01-15 17:05:12
当然,有一种方法,但它需要服务器端支持。我不知道所有的方法都是不可思议的。
如果你真的需要批量,HTTP 1.1支持一种称为HTTP流水线的概念,让您接收到响应之前发送多个请求。检查出来here
约定 - 加上HTTP支持保持活跃,以便使用HTTP流水线保持活动状态,您可以在使用相同REST API时获得批处理效果 - 通常不需要为您的服务提供其他REST API – 2008-09-29 10:01:47
我达雷尔 - 米勒同意。 HTTP已经支持HTTP Pipelining,加上HTTP支持保持活动,让你在同一个套接字中同时传输多个HTTP操作,以避免在将新请求传输到服务器之前等待响应。
因此,使用HTTP流水线并保持活动状态您在使用相同的底层REST API得到配料的效果 - 所以有通常不需要再REST API为您服务
与Astoria酒店的团队取得了良好的使用多部分MIME送一批电话。不同于流水线,因为多部分消息可以推断出原子操作的意图。看起来很优雅。
- 1. Spring批处理+ Spring API REST
- 2. Django REST框架批处理PUT(更新)
- 3. Mybatis批处理
- 4. Java - 批处理
- 5. Nodejs批处理
- 6. Java批处理
- 7. XSLT批处理
- 8. Windows批处理
- 9. 批处理
- 10. ksh批处理
- 11. Spring批处理项目集成了Spring批处理管理器
- 12. spring批处理MapJobRepositoryFactoryBean
- 13. 使用批处理
- 14. 批处理脚本
- 15. 批处理文件“”
- 16. 查找批处理
- 17. Spring批处理 - StepExecutionListener
- 18. php java批处理
- 19. 图批处理API
- 20. 批处理参数
- 21. 批处理脚本
- 22. 从Windows批处理
- 23. 使用批处理
- 24. 使用批处理
- 25. xsl xml批处理
- 26. 使用批处理
- 27. 批处理循环
- 28. 清理批处理文件
- 29. 批处理图像处理cronjob在php
- 30. 批处理作业事务处理
的foreach(在requestBatch RestRequest REQ)requestResponseList.Add(webService.Call(REQ)); 通过批量调用RESTful服务,你是什么意思?一个包含许多请求定义的请求? – 2008-09-20 21:02:46