kong hub には多数のプラグインが並んでいる。
その中の request-transformer を使ってみる
サービスとルート
service:prac1 作成。向き先は httpbin
$ curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'name=prac1' \ --data 'url=http://httpbin.org'
service:prac1 にroute追加
$ curl -i -X POST \ --url http://localhost:8001/services/prac1/routes \ --data 'name=prac1-route' \ --data 'hosts[]=prac1.org'
プラグイン設定前
plugin:request-transformer を設定する前に確認
curl -X GET \
--url http://localhost:8000/headers \
--header 'Host: prac1.org' \
--header 'x-toremove: asdfasdf'
{
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.29.0",
"X-Forwarded-Host": "prac1.org",
"X-Toremove": "asdfasdf"
}
}
plugin:request-transformer を設定
plugin:request-transformer を構成。config はサンプルをちょっと修正。
$ curl -i -X POST http://localhost:8001/services/prac1/plugins \
--data "name=request-transformer" \
--data "config.remove.headers=x-toremove" \
--data "config.remove.headers=x-another-one" \
--data "config.remove.querystring=qs-remove-name" \
--data "config.remove.querystring=qs2-remove-name" \
--data "config.remove.body=formparam-toremove" \
--data "config.remove.body=formparam-another-one" \
--data "config.rename.headers=header-old-name:header-new-name" \
--data "config.rename.headers=another-old-name:another-new-name" \
--data "config.rename.querystring=qs-old-name:qs-new-name" \
--data "config.rename.querystring=qs2-old-name:qs2-new-name" \
--data "config.rename.body=param-old:param-new" \
--data "config.rename.body=param2-old:param2-new" \
--data "config.add.headers=x-new-header:value" \
--data "config.add.headers=x-another-header:something" \
--data "config.add.querystring=new-param:some_value" \
--data "config.add.querystring=another-param:some_value" \
--data "config.add.body=new-form-param:some_value" \
--data "config.add.body=another-form-param:some_value"
request-transformer を確認
plugin 設定後に確認。headers
curl -X GET \
--url http://localhost:8000/headers \
--header 'Host: prac1.org' \
--header 'x-toremove: asdfasdf' \ <--- ヘッダ削除された
--header 'header-old-name: qwerqwer'
{
"headers": {
"Accept": "*/*",
"Header-New-Name": "qwerqwer", <--- キー変更 header-old-name -> Header-New-Name
"Host": "httpbin.org",
"User-Agent": "curl/7.29.0",
"X-Another-Header": "something", <--- ヘッダ追加
"X-Forwarded-Host": "prac1.org",
"X-New-Header": "value" <--- ヘッダ追加
}
}
anythingでquerystringの変更を確認
curl -X GET \
--url 'http://localhost:8000/anything?qs-old-name=zxcv&qs-remove-name=tyui' \
--header 'Host: prac1.org'
{
"args": {
"another-param": "some_value",
"new-param": "some_value",
"qs-new-name": "zxcv"
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.29.0",
"X-Another-Header": "something",
"X-Forwarded-Host": "prac1.org",
"X-New-Header": "value"
},
"json": null,
"method": "GET",
"origin": "172.18.*.*, ***.***.***.***, 172.18.*.*",
"url": "https://prac1.org/anything?new-param=some_value&another-param=some_value&qs-new-name=zxcv"
}