说明
插件实现是根据客户端发送的请求头中的参数,通过请求头参数添加或替换参数内容;
插件执行顺序
remove->rename->replace->add->append
创建API
curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=example-api' \
--data 'uris=/user' \
--data 'upstream_url=http://test.my' \
--header 'Accept-Charset:GBK'
返回值
{
"created_at":1513907363000,
"strip_uri":true,
"id":"d62dc229-2701-46d7-831e-080906e41a72",
"name":"example-api",
"http_if_terminated":false,
"preserve_host":false,
"upstream_url":"http://test.my",
"uris":[
"/user"
],
"upstream_connect_timeout":60000,
"upstream_send_timeout":60000,
"upstream_read_timeout":60000,
"retries":5,
"https_only":false
}
关联插件
参数介绍
consumer_id: 可选,消费者id;
config.http_method: 可选,请求方式;
config.remove.headers: 可选,删除header内容;
config.remove.querystring: 可选,删除部分URI;
config.remove.body: 可选,删除(content.request.body)请求体内容,Content-Type为以下(application/json,multipart/form-data,application/x-www-form-urlencoded)才能生效;
config.replace.headers: 可选,替换header;
config.replace.querystring: 可选,替换部分URI;
config.rename.headers: 可选,重命名header;
config.rename.querystring: 可选,重命名部分URI;
config.rename.body: 可选,重命名,参考config.remove.body;
config.replace.body: 可选,替换,参考config.remove.body,
config.add.headers: 可选,添加header内容;
config.add.querystring: 可选,添加部分URI内容;
config.add.body: 可选,添加,参考config.remove.body;
config.append.headers: 可选,追加header内容;
config.append.querystring: 可选,追加部分URI;
config.append.body: 可选,追加,参考config.remove.body;
测试修改header
curl -X POST http://localhost:8001/apis/example-api/plugins \
--data "name=request-transformer" \
--data "config.replace.headers='Accept-Charset:UTF-8'"
返回值
{
"created_at":1513907423000,
"config":{
"remove":{
"querystring":{
},
"headers":{
},
"body":{
}
},
"replace":{
"querystring":{
},
"headers":[
"'Accept-Charset:UTF-8'"
],
"body":{
}
},
"append":{
"querystring":{
},
"headers":{
},
"body":{
}
},
"add":{
"querystring":{
},
"headers":{
},
"body":{
}
},
"rename":{
"querystring":{
},
"headers":{
},
"body":{
}
}
},
"id":"e4b3eb72-9fab-4736-bbdd-22709e788367",
"name":"request-transformer",
"api_id":"d62dc229-2701-46d7-831e-080906e41a72",
"enabled":true
}