Azure API Management中set-body的&符号转义问题(Liquid模板场景)
在Azure API Management的Liquid模板中处理URL&符号的正确方式
你遇到的XML解析错误,是因为在XML上下文的Liquid模板里,&属于XML特殊字符,必须转义,但后端只识别原始的&而非&,可以用以下两种方法解决:
方法1:使用Liquid raw标签包裹特殊字符区域
raw标签会让Liquid和XML解析器跳过对标签内内容的特殊字符处理,只渲染动态变量部分:
{% if body.pagination %} "url": "/api/device/select?stats=true{% raw %}&{% endraw %}{{body.pagination}}", {% else %} "url": "/api/device/select?stats=true", {% endif %}
方法2:使用XML CDATA块包裹URL内容
CDATA块在XML中会被当作纯文本处理,不会解析内部的特殊字符,适合嵌套JSON内容的场景:
{% if body.pagination %} <![CDATA[ "url": "/api/device/select?stats=true&{{body.pagination}}", ]]> {% else %} <![CDATA[ "url": "/api/device/select?stats=true", ]]> {% endif %}
两种方法都能避免XML解析错误,同时让后端收到原始的&符号。
内容的提问来源于stack exchange,提问作者Lorenzo
相关产品推荐
相关产品推荐

