1.背景介紹
需求是将 URL:www.abc.com/api/item/111 重寫成 www.xyz.com/open/item/itemdetail?id=111。且域名不變,不能發生302跳轉。
2.request-transformer
request-transformer 是 Kong 官方的插件,允許修改重寫使用者的請求,還可以使用正規表達式比對 URL 并将比對到的字元串儲存在變量中,然後使用模闆将變量轉換成使用者的請求。
簡而言之就是重寫使用者的請求,包括 URL,args,headers,methods 等等。
github項目位址: request-transformer github
3.配置方法
kong 版本為2.2,konga 版本為0.14.9
3.1需求一
将URL:/v4/jkf/branch/qrcode&code=100006 重寫為 /v4/jkf/branch/qrcode?code=100006。也就是将&轉換為?
一、首先配置 Service 和 Route。具體配置方法參考1204-使用Kong和Konga管理微服務和API。主要關心 Route 中的 Path 設定。
|
該PATH表示:
- 比對 /v4/jkf/branch/qrcode&code=任意長度數字
- 正則\d表示比對數字,并且将比對到的數字儲存為code變量
- \&表示轉義 URL 中的$符号
關閉 route 中的 script path 可選項
二、在該 route 下添加 request-transformer 插件,表示該插件隻應用到此條 route 。并且配置插件參數
|
對于上面的指令行解釋如下:
- 21292565-e7ae-40ff-a465-f449c16b7819就是剛才建立的路由 ID
- config.replace.uri 表示将 route 比對到的 PATH 重寫為/jkf/branch/qrcode
- onfig.add.querystring 表示給 URL 添加 args 參數
- code:\$(uri_captures.code) 參數名是 code,uri_captures.code 表示擷取 route 的 PATH 中 code 變量的值,由于指令行 shell 環境關系,是以要在變量符号$前進行轉義。
Konga 的操作如下:
三:最後重新開機 kong 服務并驗
|
3.2需求二
将/api/item/111 重寫為/open/item/itemdetail?id=111
将URL後面的數字拼接到 id 的值,作為參數拼接成 URL 後,傳遞給後端
|
|
4.rewrite 參考配置
|