有谁知道批处理http请求的标准方法?含义 - 在一次往返中发送多个 http 原子请求?
出于性能原因,我们在 REST API 实现中需要这种机制。这种机制可以显着减少客户端使用 API 所需执行的往返次数。
提前致谢,
谢伊
有谁知道批处理http请求的标准方法?含义 - 在一次往返中发送多个 http 原子请求?
出于性能原因,我们在 REST API 实现中需要这种机制。这种机制可以显着减少客户端使用 API 所需执行的往返次数。
提前致谢,
谢伊
有一种官方的 HTTP 方法可以做到这一点,称为HTTP Pipelining。但是浏览器端的问题可能比服务器端的问题多。因此,如果您仅在客户端具有高级别的控制,您也许可以使用它。
XHR 并不总是允许管道传输,并且 AFAIK 您无法控制使用 Javascript 的 HTTP 隧道。所以基本的 ajax-jQuery 实现不存在。但是您可能会发现 Comet 和 Bayeux 协议的一些高级功能,模拟双向长期 tcp 连接,您肯定会减少 tcp 往返行程。
我不是彗星专家,但您可能会在这篇Comet 和 HTTP 管道文章中找到有用的信息,据我了解,其中大部分内容都是高度实验性的,但至少当 HTTP 管道是无法使用。这可能需要重新标记或提出新问题。
这是 REST 的一个问题。它们处于实体级别。REST 的想法是让每个 URL 唯一地标识一个资源。当然你可以引入聚合资源。例如,www.yoursite.com/customerA?include=Orders,Faults,Incidents 这将返回 CustomerA 的 XML,但也将客户的订单、故障、事件作为嵌入式集合返回。
如果您正在查看基于 REST 的服务或某种 API。这里有一些标准的开始http://www.odata.org/documentation/odata-version-3-0/batch-processing/
谷歌在这里的实现https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch
如果使用上述 fumanchu 所说的专用“聚合”资源对您不起作用,您也可以尝试将较少易失性资源的表示移动到缓存以减少系统负载。例如:“人类”Web 上的 HTML 页面通常包括加载和加载图像,并且许多子请求在那里无关紧要。
您可以通过在服务对象上调用 new_batch_http_request() 创建批处理请求,该服务对象返回一个 BatchHttpRequest 对象,然后为要执行的每个请求调用 add()。您可以在每个请求中传入一个回调,该请求是对该请求的响应而调用的。回调函数参数是每个 API 调用的唯一请求标识符、包含 API 调用响应的响应对象以及可以设置为由 API 调用引发的异常的异常对象。添加请求后,调用 execute() 来发出请求。execute() 函数阻塞,直到所有回调都被调用。
参考:
你也可以试试这个https://developers.google.com/api-client
库/python/指南/批处理
https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch
Windows 10(及以下版本)的 build 17063 附带CURL
命令:
curl -X POST -H "Content-Type: application/json" -d "{\"name\": \"myname\", \"email\": \"some@example.com\"}' https://example/contact
call winhttpjs.bat "http://requestb.in/xxxxxx" -method POST -header hdrs.txt -reportfile reportfile2.txt
call winhttpjs.bat "http://requestb.in/xxxxxx" -method GET -header hdrs.txt -reportfile reportfile3.txt -saveTo c:\somezip.zip
call winhttpjs.bat "http://requestb.in/xxxxxx" -method POST -header hdrs.txt -reportfile reportfile2.txt -saveTo responsefile2 -ua "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -body-file some.json
它目前不支持多部分请求,我打算添加这样的东西,但我不知道我什么时候有时间。