apisix/doc/zh-cn/plugins/batch-requests.md
Shuyang Wu 6f06622382
doc: plugin attributes format unification (#2278)
* [WIP] doc api unify

* [WIP] doc api unify

* doc api format

* fix typo
2020-09-23 08:11:27 +08:00

6.4 KiB
Raw Blame History

目录

简介

batch-requests 插件可以一次接受多个请求并以 http pipeline 的方式在网关发起多个http请求合并结果后再返回客户端这在客户端需要访问多个接口时可以显著地提升请求性能。

提示

外层的 Http 请求头会自动设置到每一个独立请求中,如果独立请求中出现相同键值的请求头,那么只有独立请求的请求头会生效。

属性

如何启用

本插件默认启用。

批量接口请求/响应

插件会为 apisix 创建一个 /apisix/batch-requests 的接口来处理你的批量请求。

接口请求参数:

参数名 类型 可选项 默认值 有效值 描述
query object 可选 给所有请求都携带的 QueryString
headers object 可选 给所有请求都携带的 Header
timeout number 可选 30000 聚合请求的超时时间,单位为 ms
pipeline HttpRequest 必须 Http 请求的详细信息

HttpRequest

参数名 类型 可选 默认值 有效值 描述
version string 可选 1.1 [1.0, 1.1] 请求用的 http 协议版本
method string 可选 GET ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT", "TRACE"] 请求使用的 http 方法
query object 可选 独立请求所携带的 QueryString, 如果 Key 和全局的有冲突,以此设置为主。
headers object 可选 独立请求所携带的 Header, 如果 Key 和全局的有冲突,以此设置为主。
path string 必须 请求路径
body string 可选 请求体
ssl_verify boolean 可选 false 验证 SSL 证书与主机名是否匹配

接口响应参数:

返回值为一个 HttpResponse数组

HttpResponse

参数名 类型 描述
status integer Http 请求的状态码
reason string Http 请求的返回信息
body string Http 请求的响应体
headers object Http 请求的响应头

测试插件

你可以将要访问的请求信息传到网关的批量请求接口( /apisix/batch-requests ),网关会以 http pipeline 的方式自动帮你完成请求。

curl --location --request POST 'http://127.0.0.1:9080/apisix/batch-requests' \
--header 'Content-Type: application/json' \
--d '{
    "headers": {
        "Content-Type": "application/json",
        "admin-jwt":"xxxx"
    },
    "timeout": 500,
    "pipeline": [
        {
            "method": "POST",
            "path": "/community.GiftSrv/GetGifts",
            "body": "test"
        },
        {
            "method": "POST",
            "path": "/community.GiftSrv/GetGifts",
            "body": "test2"
        }
    ]
}'

返回如下:

[
    {
        "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"
        }
    },
    {
        "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"
        }
    }
]

禁用插件

正常情况不需要禁用本插件,如果有特殊情况,从 /conf/config.yamlplugins 节点中移除即可。