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

如何在API管理入站策略中从Named Value解析JSON构造请求头

问题解答

翻译后的问题内容

我希望将JSON文档存储在名为Info的Named Value中,示例内容为:

{ "Info": "MyInfo" }

随后编写如下入站策略:

<inbound>
    <base />
    <set-variable name="MyVar" value={{Info}}>
    <set-header name="MyHeader" exists-action="override">
        <value>@{
            string headerValue;
            // Parse the JSON in "MyVar" and use it set
            // "headerValue" to the string "MyInfo"
            return headerValue;
        }</value>
    </set-header>
</inbound>

请问应替换上述策略中注释部分的代码是什么?我不清楚如何:

  1. 访问变量MyVar
  2. 解析其JSON值以提取字符串"MyInfo"的内容

解决方案

首先修正策略中的语法错误:<set-variable>标签缺少闭合符号,应改为:

<set-variable name="MyVar" value="{{Info}}" />

然后替换注释部分的代码,完成变量访问与JSON解析:

// 访问MyVar变量获取JSON字符串
string jsonContent = context.Variables.GetValueOrDefault<string>("MyVar");
// 解析JSON并提取Info字段的值
headerValue = Newtonsoft.Json.Linq.JObject.Parse(jsonContent)["Info"].ToString();

完整的<set-header>策略代码如下:

<set-header name="MyHeader" exists-action="override">
    <value>@{
        string headerValue;
        // 访问变量并解析JSON
        string jsonContent = context.Variables.GetValueOrDefault<string>("MyVar");
        headerValue = Newtonsoft.Json.Linq.JObject.Parse(jsonContent)["Info"].ToString();
        return headerValue;
    }</value>
</set-header>

说明

  • 访问APIM变量:使用context.Variables.GetValueOrDefault<T>("变量名")方法,指定对应的数据类型即可获取变量值。
  • 解析JSON:APIM默认集成了Newtonsoft.Json库,直接使用JObject.Parse()解析JSON字符串,再通过键名提取目标值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:15:55