使用 Liquid 模板将 APIM 响应作为有效 JSON 返回

问题描述 投票:0回答:1

我正在尝试使用 Azure APIM 策略修改响应,如下所示:

<set-body>@{
JObject response = context.Response.Body.As<JObject>(preserveContent: true);
return response.ToString();
}</set-body>

如果我使用它作为响应,我的 json 就可以了。但是,我尝试使用液体模板嵌套结果主体,如下所示

<set-body template="liquid">{"result" : { {{body}} }, "targetUrl": "null", "success": "true"}
</set-body>

但是,正文不会以格式化的 json 形式出现,并且响应的第一级缺少逗号。

EG 结果为:

“代码”:“1234”“制造商”:“测试”“计数”:1

应该是

“代码”:“1234”,“制造商”:“测试”,“计数”:1

我不想变换主体,只是将其嵌套在结果中。最好的方法是什么?

蒂亚

azure azure-api-management policy apim liquid-template
1个回答
0
投票

我认为最好的方法不是使用液体模板,而是对 json 进行 stringfy 并附加结果,如下所示:

<set-body>@(
         "{\r\n    \"result\": " + context.Response.Body.As<string>(preserveContent: true) + ",\r\n    \"targetUrl\": \"null\",\r\n    \"success\": \"true\",\r\n    \"error\": \"null\",\r\n    \"unAuthorizedRequest\": \"false\",\r\n    \"__abp\": \"true\"\r\n}"
                )</set-body>
© www.soinside.com 2019 - 2024. All rights reserved.