【发布时间】:2018-03-06 12:26:42
【问题描述】:
我希望有人看到这一点并确切知道该怎么做。我觉得我尝试了所有方法:(。为了提供一点背景知识,我正在尝试创建一个通用的 rest 端点来代理 SOAP 报告服务后端并将查询字符串 keyValues 作为参数传递。
我使用 context.Request.OriginalUrl.Query 开始了路径,即:IReadOnlyDictionary<string, string[]> 并遍历键和值。这是我的首选方法,但我收到了错误:
Liquid 语法错误:对象 '[p_customer_name, System.String[]]' 是 无效,因为它既不是内置类型也不是实现 可流动的
上面生成的代码:
<v2:listOfParamNameValues>
{% for parameter in context.Request.OriginalUrl.Query %}
<v2:item><v2:name>{{parameter.Key}}</v2:name><v2:values>
{% for value in parameter.Value %}
<v2:item>{{value}}</v2:item>
{% endfor %}
</v2:values></v2:item>
{% endfor %}
</v2:listOfParamNameValues>
我放弃了,开始自己解析 QueryString 以便继续前进,但使用 Split: &amp; 或 Split: '&amp;' 似乎忽略了 & 和 Split: '&' 会导致错误:
一个或多个字段包含不正确的值:发生错误时 解析实体名称。第 15 行,位置 123。
<v2:listOfParamNameValues>{% assign parts = context.Request.OriginalUrl.QueryString | Remove-First: '?' | Split:'&' -%}
{%- for part in parts -%}
{%- assign keyValues = part | Split:'=' -%}
{%- for keyValue in keyValues -%}
{{-keyValue[0]}}:{{keyValue[1]-}}
{%- endfor -%}
{%- endfor %}</v2:listOfParamNameValues>
我对任何想法持开放态度,如果还有什么我可以添加的可能有帮助的,请告诉我。
谢谢!
【问题讨论】:
-
context.Request.OriginalUrl.QueryString的内容是什么?
-
?p1=test1&p2=test2
-
对不起,我上周在度假。让我对此进行调查并为您解答。
标签: azure liquid azure-api-management dotliquid