kong网关使用pre-function插件,改写接口的返回数据

打印 上一主题 下一主题

主题 849|帖子 849|积分 2547

一、配景

kong作为api网关,除了反向代理后端服务外,还可对接口举行预处理。
好比本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。
使用到的kong插件是pre-function。

除了上面的场景,还适用于拒绝整个域名的访问。
二、接口的重写

   根据http header中的SchoolId,当等于2747时,返回[ { “valid”: false } ];反之,返回 [ { “valid”: true } ]
  

下面是其Lua脚本内容:
  1. local school_id = kong.request.get_header("SchoolId") if school_id == "2747" then return kong.response.exit(200, '[ { "valid": false } ]') else return kong.response.exit(200, '[ { "valid": true } ]') end
复制代码
验证:


  • http header 的schoolId = 2747



  • http header 的schoolId != 2747

三、拒绝域名的请求

同样是使用pre-function插件实现。


Lua脚本内容为:
  1. return kong.response.exit(503, '{code: 400, msg: "xx服务已下线,请联系技术支持处理!"}', {["Content-Type"] = 'application/json' })
复制代码
履历证,域名的接口再次访问,返回报错。

四、总结

总之,kong的这款pre-function插件可以适用于许多场景,长处是灵活配置,支持lua脚本。当然,它只返回相对固定的报文,除非你使用Lua脚本去连接数据存储中间件。
不外,对于简单的一些场景够用了,这也提醒我们一点,在客户端请求接口的时候,只管把一些标识性的字段通过http header上传上来。
好比schoolId 、 userId、 deviceId、ip等等,后期在kong网关便于读取并判断是否拦截请求。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表