当前位置: 首页 > article >正文

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

一、背景

kong作为api网关,除了反向代理后端服务外,还可对接口进行预处理。

比如本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。

使用到的kong插件是pre-function。

在这里插入图片描述

除了上面的场景,还适用于拒绝整个域名的访问。

二、接口的重写

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

在这里插入图片描述

下面是其Lua脚本内容:

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脚本内容为:

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网关便于读取并判断是否拦截请求。


http://www.kler.cn/a/450487.html

相关文章:

  • 活着就好20241225
  • DevNow x Notion
  • Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)
  • 一个比RTK或redux更轻量级更易使用的 React 第三方状态管理工具库的配置与使用
  • Charles安装证书过程(手机)
  • 探索AI代理在《我的世界》中的奇妙之旅:代理IP的角色与影响
  • 隧道可视化技术开拓智能建设新航道
  • 基于Spring Boot的摄影器材租赁回收系统
  • 神经网络图像隐写术:用AI隐藏信息的艺术
  • 1小时放弃Rust(1): Hello-World
  • *【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数
  • 逻辑的诗:类与对象(下)
  • JavaWeb(一) | 基本概念(web服务器、Tomcat、HTTP、Maven)、Servlet 简介
  • Hydra配置文件的书写语法
  • Ruby+Selenium教程
  • 今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福
  • 预约参观华为基地,见证行业巅峰
  • Jmeter分布式压力测试
  • 7-4 字符串的冒泡排序
  • VMware vCenter保姆级安装部署(VMware VCenter Nanny Level Installation and Deployment)
  • Mac的M2芯片运行lightgbm报错,其他python包可用,x86_x64架构运行
  • 如何绘制网络拓扑图?附详细分类解说和用户案例!
  • 中间件xxl-job安装
  • JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
  • llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型
  • 电商系统-产品经理