限制通过Azure APIM请求的字段



我们正在使用围绕Dynamics365 API的Azure APIM。我们已经启动并运行了它,但我想做的是限制通过APIM返回的字段/属性。

。,我们有一个名为Contacts的方法,但我不想返回200个字段,只返回我们希望通过APIM公开的字段。

有一个关于如何在响应中执行此操作的演练,但我想在初始请求(即Web API中的SELECT)上进行过滤。

https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies

我试着在入站报头中使用这种命名法,但无济于事。

<choose>
<when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
<set-body>@{
var response = context.Response.Body.As<JObject>();
foreach (var key in new [] {"current", "minutely", "hourly", "daily", "alerts"}) {
response.Property (key).Remove ();
}
return response.ToString();
}
</set-body>
</when>
</choose>

如果我理解正确的话,您只需要使用set-query-parameter策略:

<set-query-parameter name="$select" exists-action="override ">
<value>firstname,nickname</value>
</set-query-parameter>

您需要转换输入有效负载。使用APIM策略内的有效负载转换逻辑。一个例子是使用液态模板并传递唯一必需的字段。您可以在这里参考文档:https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/api-management/api-management-transformation-policies.md#using-liquid-templates-with-set-body

最新更新