You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kong Gateway:request-transformer插件能否更新JSON请求体子对象?

Kong 3.3.0 Db-Less模式下更新JSON嵌套属性的解决方案

你遇到的问题是Kong自带的请求体修改插件(比如request-transformer-advanced)在声明式YAML配置中,默认不会将点分隔的键解析为嵌套JSON路径,而是直接将带点的字符串作为键名。以下是解决办法:

1. 使用JSON Pointer语法指定嵌套路径

Kong的request-transformer-advanced插件支持通过JSON Pointer格式定位JSON嵌套属性,而非用点分隔的键名。在YAML配置中,需要将JSON修改规则写成数组形式,每个元素包含path(JSON Pointer路径)和value(要设置的值)。

示例正确配置:

services:
- name: your-service
  url: http://backend-api
  routes:
  - name: your-route
    paths: ["/api"]
  plugins:
  - name: request-transformer-advanced
    config:
      json:
        replace:
        - path: "/user/profile/email"
          value: "$headers{X-User-Email}"
        - path: "/user/id"
          value: "$headers{X-User-ID}"

这里的path用/分隔层级,比如/user/profile/email对应JSON中的user.profile.email属性,配置生效后会生成正确的嵌套对象结构。

2. 确认使用正确的插件版本

确保你启用的是request-transformer-advanced插件,而非旧版的request-transformer。旧版插件不支持复杂的JSON嵌套操作,Kong 3.3.0默认已包含request-transformer-advanced,直接使用即可。

3. 检查YAML缩进格式

声明式配置对缩进高度敏感,数组元素(比如replace下的每条规则)需要保持正确缩进,否则Kong会解析错误导致配置不生效。

关于自定义插件

如果上述官方插件的功能无法满足你的复杂需求,再考虑编写自定义插件。优先利用原生功能可以减少后续维护成本,避免重复造轮子。

内容的提问来源于stack exchange,提问作者Steve Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:42:37