小编And*_*art的帖子

如何重用 Azure API 管理策略中的响应上下文变量?

我正在利用 Azure API 管理解决方案编写概念验证。

我正在尝试编写一项<inbound>执行以下操作的策略:

  • 用于<send-request>向 API 的身份验证端点发出请求。
  • 身份验证 API 返回两个密钥,必须将其作为 http 标头包含在内,以便能够向其他端点发出后续请求。
  • 我正在将身份验证 API 的响应解析为 json 使用JObject
  • 然后我尝试从 json 对象的两个属性中读取值(它们是字符串)
  • 然后,我将向不同的 API 端点发出后续请求,并设置两个 http 标头。标头的值必须是第一个(身份验证)响应中的两个变量。

这就是我目前的政策:

<inbound>
  <base />

  <!-- Authenticate with the API and get authentication tokens for subsequent calls -->
  <send-request mode="new" response-variable-name="auth" timeout="20" ignore-error="true">
    <set-url>https://www.service.com/api/authenticate</set-url>
    <set-method>POST</set-method>
    <set-header name="Content-Type" exists-action="override">
      <value>application/json</value>
    </set-header>
    <set-body>
      @{
        var credentials = new JObject(); 

        credentials.Add(new JProperty("logonId", "{{API_LOGON_USERNAME}}")); 
        credentials.Add(new JProperty("logonPassword", "{{API_LOGON_PASSWORD}}")); 

        return credentials.ToString(); 
      }
    </set-body>
  </send-request>

  <!-- Make …
Run Code Online (Sandbox Code Playgroud)

c# azure-api-management ibm-api-management apim

4
推荐指数
1
解决办法
8382
查看次数