【发布时间】:2021-01-06 06:59:25
【问题描述】:
在 REST API 的 APIM 策略中,我尝试为后端服务创建 SOAP 请求。 REST 请求的 URI 是 /GetCustomer/{accountNumber}。 在下面的 Liquid if 语句中,我试图检查 MatchedParameters 集合是否包含帐号。这不起作用,我从 else 分支获取值。 我尝试了几种变体:
- {% if {{context.Request.MatchedParameters.ContainsKey("accountNumber")}} %}
- {% if @(context.Request.MatchedParameters.ContainsKey("accountNumber")) %}
- {% if context.Request.MatchedParameters.ContainsKey("accountNumber") %}
<set-body template="liquid">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://my-services.com/CustomerService/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<GetCustomer>
<request>
{% if {{context.Request.MatchedParameters.ContainsKey("accountNumber")}} %}
<AccountNumber>{{context.Request.MatchedParameters["accountNumber"]}}</AccountNumber>
{% else %}
<AccountNumber xsi:nil="true" />
{% endif %}
</request>
</GetCustomer>
</soap:Body>
</soap:Envelope>
</set-body>
离开 if 语句可以正常工作,然后按我的预期构造请求:
<set-body template="liquid">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://my-services.com/CustomerService/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<GetCustomer>
<request>
<AccountNumber>{{context.Request.MatchedParameters["accountNumber"]}}</AccountNumber>
</request>
</GetCustomer>
</soap:Body>
</soap:Envelope>
</set-body>
所以问题是:是否可以从 Liquid if 语句中访问上下文?如果是这样,正确的语法是什么?
【问题讨论】: