如何解决Azure APIM中的响应映射
有什么方法可以将我的API响应映射到Azure APIM中所需的格式
例如如果我的API给出了类似的响应
customer: {
"id" : 123
}
我需要的输出是
customer: {
"customerID": 123
}
有没有不使用机体策略的方法吗?
还是有什么方法可以定义可以将Id
值映射到customerID
解决方法
您可以使用Find and Replace String in Body策略来获得简单的解决方案。
,有两种选择:
简单JSON
如果问题中显示了简单的JSON,那么Find and Replace transformation策略可能会有所帮助。 请注意,此策略只会执行字符串替换。它对JSON格式一无所知。因此,在更换任何东西时都必须格外小心。
但是我认为在现实世界中,JSON可能不是那么简单。
复杂JSON
您可以使用Set Body Transformation策略来实现自定义逻辑。
代码如下所示。您可以获取JObject,然后query and update。
<choose>
<when condition="@(context.Response.StatusCode == 200">
<set-body>
@{
JObject inBody = context.Request.Body.As<JObject>();
// Razor view syntax so you can write code as per your need
JObject customer= (JObject)inBody["customer"];
var customerIdValue = ((string)customer["id"]);
customer["CustomerId"] = customerId;
customer.Property("id").Remove();
// assuming customer has a description property
customer.Property("description").AddAfterSelf(new JProperty("customerId",customerIdValue));
return inBody.ToString();
}
</set-body>
</when>
</choose>
,
还可以在操作的外部使用带有液体模板的set-body:
<set-body template="liquid">{
"customer": {
"customerID": {{body.customer.id}}
}
}</set-body>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。