kong处理path参数

本文详细介绍如何在Kong中利用request-transformer插件处理带有path参数的API请求,通过正则表达式实现路径替换和参数捕获。

问题

之前要在kong上注册一些API,在处理到拥有path参数的接口时有点犯难了,通过官方文档查询kong支持的插件,发现可以使用request-transformer插件配合正则来重写请求路径,从而可以达到处理path参数的需求。

request-transformer

简单看一下官方对于这个插件的介绍:

The Request Transformer plugin for Kong allows simple transformation of requests before they reach the upstream server. These transformations can be simple substitutions or complex ones matching portions of incoming requests using regular expressions, saving those matched strings into variables, and substituting those strings into transformed requests using flexible templates.

简单翻译过来就是该插件可以对请求路径做一些替换,用正则将请求中的部分参数作为字符串存入到某个变量中,随后可以对它进行替换。详细的说明可以查看官方文档,我这里简单说明一下如何用它处理path参数。

使用

在kong上去给api创建一个带有path参数的route:

curl -i -X POST \
  --url http://localhost:8001/services/test-service/routes \
  --data 'hosts[]=127.0.0.1' \
  --data 'paths[]=/getProducts/(?<id>)\S+)/test$'\
  --data 'methods[]=GET'

原始的path应该是/getProducts/{id}/test,在创建route的时候需要将这里的id使用正则匹配,并用变量id接收,并在path的最后面加上$符号,不管path里有多少参数,都在最后加上$符号!!
创建完route之后,就需要给route添加request-transformer插件:

curl -i -X POST \
  --url http://localhost:8001/routes/{你刚刚创建出来的route}/plugins \
  --data "name=request-transformer"
  --data "config.replace.uri=/getProducts/$(uri_captures[1])/test"

如果不止一个path参数,那么就在对应的地方加上$(uri_captures[2])$(uri_captures[3])、、、

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值