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

TYK Gateway如何将查询参数从camelCase转换为snake_case?

在TYK Gateway中实现查询参数camelCase到snake_case的转换

要实现请求查询参数从camelCase到snake_case的转换,你可以利用TYK Gateway的自定义JavaScript前置中间件,在请求转发到上游服务前修改查询参数的键名。以下是具体实现步骤:

1. 编写参数转换脚本

创建一个JavaScript文件(比如transform-query-params.js),实现camelCase到snake_case的转换逻辑,并替换请求的查询参数:

// 定义camelCase转snake_case的工具函数
function camelToSnake(str) {
    return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
}

// 前置中间件处理函数
function transformQueryParams(request, session, config) {
    const newQuery = {};
    // 遍历原查询参数,转换键名
    for (const key in request.query) {
        if (request.query.hasOwnProperty(key)) {
            const snakeKey = camelToSnake(key);
            newQuery[snakeKey] = request.query[key];
        }
    }
    // 替换请求的查询参数集合
    request.query = newQuery;
    return true; // 返回true允许请求继续流转
}

// 导出中间件函数供TYK调用
exports.pre = transformQueryParams;

2. 配置TYK API定义

在你的API配置JSON中,添加自定义前置中间件的引用,指定脚本路径和函数名:

{
  "name": "示例API",
  "slug": "example-api",
  "api_id": "your-unique-api-id",
  "org_id": "your-org-id",
  "custom_middleware": {
    "pre": [
      {
        "name": "transformQueryParams",
        "path": "/opt/tyk/middleware/transform-query-params.js", // 替换为你的脚本实际路径
        "require_session": false
      }
    ]
  },
  "proxy": {
    "target_url": "https://upstream.com",
    "listen_path": "/"
  },
  // 其他API配置项(如认证、限流等)...
}

3. 验证转换效果

将配置更新到TYK Gateway后,发送测试请求:

请求地址:https://gateway.com?firstName=John&lastName=Doe

TYK会自动将查询参数转换为first_name=John&last_name=Doe,并转发到上游服务https://upstream.com。你可以通过TYK Dashboard的请求日志或抓包工具确认转换结果。

注意事项

  • 如果存在多个camelCase键转换后重名的情况(比如userID和userId都转为user_id),后出现的参数值会覆盖前者,需根据业务场景调整逻辑(如合并值或保留第一个)。
  • 确保脚本路径在TYK Gateway容器/服务器中可访问,权限配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:05:15