kong request-transformer
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" }