微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure APIM中的响应映射

如何解决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 举报,一经查实,本站将立刻删除。