Azure API管理策略-动态命名值选择

时间:2019-10-25 07:24:36

标签: azure-api-management policy

我已经存储了一个基于用户ID的命名值,因此我可以通过选择的参考来识别有效负载提交者。

当我使用下面的策略时,我将值作为字符串获取,而不是实际查找命名的值。如果我只是在双大括号内写用户ID,而不是从上下文中动态获取用户ID,则查找工作正常,并且可以用我想要的命名值代替。

不可能简单地做到吗?

<policies>
  <inbound>
    <set-header name="x-request-context-data" exists-action="override">
      <value>{{@(context.User.Id)}}</value>
    </set-header>
  </inbound>
</policies>

输出:

x-request-context-data: {{@(context.User.Id)}}

1 个答案:

答案 0 :(得分:1)

MSDN回答。

  

相反,您可以在策略表达式中使用命名值   不支持,并且无法按照中所述进行支持   这个feature request

     

解决方法要么是

     
      
  • 将命名值存储为具有key = value对的JSON字符串或CSV字符串。然后使用策略表达式来解析和获取所需的值。
  •   
  • 使用control flow policies进行运行时决策。
  •   
  • 对于复杂的情况,请卸载到功能应用程序中,但如果可能,请使用value caching policies来缩短延迟时间
  •