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

WSO2 2.1.0内联原型:如何获取非路径类型的变量?

我来帮你搞定WSO2 APIM 2.1.0内联原型里获取查询参数和请求体变量的问题!你已经能拿到路径参数了,其实查询参数和请求体的获取也有现成的Synapse API可以用,分情况给你详细说明:

获取查询参数

在你的内联原型脚本里,通过mc(也就是ScriptMessageContext对象)可以直接获取单个或所有查询参数:

  • 单个查询参数:用mc.getQueryParam("<参数名>")就能拿到对应的值。比如你定义了queryParam这个查询参数,代码示例如下:
// 获取单个查询参数的值
var queryValue = mc.getQueryParam("queryParam");
mc.getLog().info("查询参数queryParam的值:" + queryValue);
  • 所有查询参数:如果要批量获取,可以通过mc.getRequest().getQueryParams()拿到一个参数Map,然后遍历处理:
var queryParamsMap = mc.getRequest().getQueryParams();
// 遍历所有查询参数
var keys = queryParamsMap.keySet().iterator();
while(keys.hasNext()){
    var key = keys.next();
    var value = queryParamsMap.get(key);
    mc.getLog().info("查询参数[" + key + "]:" + value);
}
获取请求体变量

如果你的API是POST/PUT这类带请求体的方法,分两种常见情况处理:

JSON格式请求体

先读取请求体的内容,再解析成JSON对象来获取字段:

// 获取请求体的OMElement对象
var payloadElement = mc.getRequest().getPayload();
// 转换为JSON字符串
var payloadStr = payloadElement.toString();
// 解析为JSON对象
var payloadJson = JSON.parse(payloadStr);
// 获取指定字段的值,比如bodyParam
var bodyValue = payloadJson.bodyParam;
mc.getLog().info("请求体参数bodyParam的值:" + bodyValue);

表单格式请求体(application/x-www-form-urlencoded)

这种情况可以直接获取表单参数的Map,和查询参数的处理方式类似:

var formParamsMap = mc.getRequest().getFormParams();
// 获取单个表单参数
var formValue = formParamsMap.get("formParam");
mc.getLog().info("表单参数formParam的值:" + formValue);

需要注意的是,你的Swagger示例里是GET请求,所以主要用到查询参数的获取方法;如果后续有POST/PUT接口,再用请求体的处理逻辑就行。这些方法在WSO2 APIM 2.1.0的内联原型脚本中都是原生支持的,直接替换到你的示例代码里就能生效~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:20:48