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

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.lryc.cn/news/510087.html

相关文章:

  • 【QT开发自制小工具】PDF/图片转excel---调用百度OCR API接口
  • vue2 elementui if导致的rules判断失效
  • DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)
  • 嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备
  • spring cloud gateway 3
  • html + css 淘宝网实战
  • 游戏引擎学习第62天
  • LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)
  • C项目 天天酷跑(下篇)
  • 达梦数据守护搭建
  • 记录一次前端绘画海报的过程及遇到的几个问题
  • 24.12.26 SpringMVCDay01
  • 一分钟快速了解Ecovadis认证等级划分
  • 科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
  • 【网络云计算】2024第52周-每日【2024/12/26】小测-理论实操-备份MySQL数据库并发送邮件-解析
  • 菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
  • Level DB --- MemTable
  • 【山西长治】《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准》(长财行[2022]25号)-省市费用标准解读系列32
  • 海格通信嵌入式面试题及参考答案
  • 前端学习DAY27(盒子模型内边距)
  • 基于cobra开发的k8s命令行管理工具k8s-manager
  • scala基础学习(数据类型)-数组
  • uniapp 微信小程序 页面部分截图实现
  • C语言从入门到放弃教程
  • 直流无刷电机驱动原理3-驱动板硬件设计
  • 攻防世界web第三题file_include
  • Trivy Operator命令使用说明
  • Lazada商品评论API接口:深度解析与应用实践
  • 2024最新鸿蒙开发面试题合集(二)-HarmonyOS NEXT Release(API 12 Release)
  • macrodroid通过http请求控制手机运行宏