APIM 策略设置查询参数的 StringConcat

问题描述 投票:0回答:1

我需要为后端 api 连接字符串,前端 api 只是接受一个 Id 值,例如:ProjectId,而后端请求的形式是 www.formUrlencoded 字符串,并且需要请求的形式为 data="{查询":"项目(ProjectId=@(context.Variables["ProjectId"])}.

策略定义中设置的字符串是 "{Query":"Project(ProjectId='@(context.Variables["ProjectId"])'",但是在查看跟踪时,实际字符串是: {查询":"项目(ProjectId=@(context.Variables["ProjectId"])}

应该是 {Query":"Project(ProjectId='1234567') 我尝试了多种组合,但无法正常工作。任何建议,非常感谢。

  <set-query-parameter name="data" exists-action="override">
        <value>{"Query":"Project(ProjectId=@(context.Variables["ProjectId"])"}</value>
  </set-query-parameters>
azure azure-api-management
1个回答
0
投票

使用下面给出的策略将查询字符串值传递为

{Query":"Project(ProjectId='1234567')"}

政策-

<policies>
    <inbound>
        <base />
        <set-variable name="ProjectId" value="1234567" />
        <set-query-parameter name="data" exists-action="override">
            <value>@($"{{\"Query\":\"Project(ProjectId='{context.Variables.GetValueOrDefault<string>("ProjectId")}')\"}}")</value>
        </set-query-parameter>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

此策略会将查询字符串参数添加到后端 URL,如下所示 -

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.