微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Azure API 管理中的设置变量策略中访问请求正文?

如何解决如何在 Azure API 管理中的设置变量策略中访问请求正文?

json 请求正文包含一个我想访问并存储在上下文中的值。变量,以便稍后我可以在控制流表达式中使用它。

这里是json请求体:

  {
    "File": [
      {
        "Key": "ValuetoGet","List": [
          {},{}
        ]
      }
    ]
  }

我希望“ValuetoGet”成为设置变量策略的值,如下所示:

<set-variable name="myVar" value="ValuetoGet">

我已尝试使用此表达式将主体存储在单独的变量中:

<set-variable name="varBody" value="@(context.Request.Body.As<JObject>())" />

然后在下一个集合变量策略中使用它:

<set-variable name="myVar" value="@{
        JObject json = JObject.Parse(context.Variables.GetValueOrDefault<string>("varBody"));
        var code = json.GetValue("Key");
        return code;
        }" />

但它似乎不起作用,我收到以下错误,该错误与我存储身体的方式有关:

{
    "messages": [
        {
            "message": "Expression evaluation Failed.","expression": "context.Request.Body.As<JObject>()","details": "Object reference not set to an instance of an object."
        },"Expression evaluation Failed. Object reference not set to an instance of an object.","Object reference not set to an instance of an object."
    ]
}

当我尝试访问相同设置变量策略中的请求正文时,我遇到了同样的错误

我一直在努力解决这个问题,如果有任何帮助,我将不胜感激。谢谢。

解决方法

如果您只想设置一个变量,其值为第一个 Key 项的 File,请尝试以下表达式:

<set-variable name="myVar" value="@(context.Request.Body.As<JObject>()["File"][0]["Key"])" />

我已经用您的请求正文进行了测试,它非常适合我:

enter image description here

跟踪日志:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。