batch-requests
can accept mutiple request and send them from apisix
via http pipeline,and return a aggregated response to client,this can significantly improve performance when the client needs to access multiple APIs.
Tips
The HTTP headers for the outer batch request, except for the Content- headers such as Content-Type, apply to every request in the batch. If you specify a given HTTP header in both the outer request and an individual call, then the individual call header's value overrides the outer batch request header's value. The headers for an individual call apply only to that call.
None
Default enbaled
The plugin will create a api in apisix
to handle your batch request.
ParameterName | Type | Optional | Default | Description |
---|---|---|---|---|
query | Object | Yes | Specify QueryString for all request |
|
headers | Object | Yes | Specify Header for all request |
|
timeout | Number | Yes | 3000 | Aggregate Api timeout in ms |
pipeline | HttpRequest | No | Request's detail |
ParameterName | Type | Optional | Default | Description |
---|---|---|---|---|
version | Enum | Yes | 1.1 | http version: 1.0 or 1.1 |
method | Enum | Yes | GET | http method, such as:GET . |
query | Object | Yes | request's QueryString , if Key is conflicted with global query , this setting's value will be setted. |
|
headers | Object | Yes | request's Header , if Key is conflicted with global headers , this setting's value will be setted. |
|
path | String | No | http request's path | |
body | String | Yes | http request's body |
Response is Array
of HttpResponse.
ParameterName | Type | Description |
---|---|---|
status | Integer | http status code |
reason | String | http reason phrase |
body | String | http response body |
headers | Object | http response headers |
You can pass your request detail to batch api( /apisix/batch-requests
), apisix
can automatically complete requests via http pipeline. Such as:
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"
}
]
}'
response as below:
[
{
"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"
}
}
]
Normally, you don't need to disable this plugin.If you does need please remove it from the plugins
section of/conf/config.yaml
.