batch-requests
在客户端需要访问多个 API 的情况下,这将显著提高性能。
note
外部批处理请求的 HTTP 请求头(除了以 Content-
开始的请求头,例如:Content-Type
)适用于批处理中的每个请求。
如果在外部请求和单个调用中都指定了相同的 HTTP 请求头,则单个调用的请求头优先。
属性
无。
接口
该插件会增加 /apisix/batch-requests
接口。
note
该插件默认是禁用状态,你可以在配置文件(./conf/config.yaml
)添加如下配置启用 batch-requests
插件:
conf/config.yaml
配置插件
默认情况下,可以发送到 /apisix/batch-requests
的最大请求体不能大于 1 MiB。 你可以通过 apisix/admin/plugin_metadata/batch-requests
更改插件的此配置:
curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/batch-requests \
{
"max_body_size": 4194304
}'
元数据
该插件会为 apisix
创建一个 /apisix/batch-requests
的接口,用来处理批量请求。
HttpRequest
响应参数
返回值是一个 HttpResponse 的数组
。
HttpResponse
修改自定义 URI
只需要在创建路由时设置所需的 URI 并更改 public-api
插件的配置:
测试插件
首先,你需要为 batch-requests
插件的 API 创建一个路由,它将使用 public-api 插件。
curl http://127.0.0.1:9080/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/apisix/batch-requests",
"plugins": {
"public-api": {}
}
}'
之后,你就可以将要访问的请求信息传到网关的批量请求接口(/apisix/batch-requests
)了,网关会以 的方式自动帮你完成请求。
正常返回结果如下:
[
{
"status": 200,
"reason": "OK",
"body": "{\"ret\":500,\"msg\":\"error\",\"game_info\":null,\"gift\":[],\"to_gets\":0,\"get_all_msg\":\"\"}",
"headers": {
"Date": "Sat, 11 Apr 2020 17:53:20 GMT",
"Content-Type": "application/json",
"Content-Length": "81",
"Server": "APISIX web server"
}
},
{
"status": 200,
"reason": "OK",
"body": "{\"ret\":500,\"msg\":\"error\",\"game_info\":null,\"gift\":[],\"to_gets\":0,\"get_all_msg\":\"\"}",
"headers": {
"Connection": "keep-alive",
"Date": "Sat, 11 Apr 2020 17:53:20 GMT",
"Content-Type": "application/json",
"Content-Length": "81",
"Server": "APISIX web server"
}
]
如果你想禁用插件,可以将 从配置文件中的插件列表删除,重新加载 APISIX 后即可生效。