问题描述
我正在尝试实现这一点,当我根据请求标头调用 APIM 端点时,它应该是不同的端点。例如,当用户调用 https://test.azure-api.net/testsvc-dev/api/test APIM 时,应该能够将请求发送到 https://testappv1:80/test 或 https://testappv2:80。现在我可以在 serviceURL 中看到,我只能添加一个。是否有任何策略可用于执行此类操作。
更多上下文:我试图在一次调用中访问两个不同版本的 API。我试图让 APIM 根据用户来决定,而不是调用者选择调用哪个。
解决方法
您可能正在寻找 set-backend-service
政策。
以下是 Microsoft 文档中根据查询参数更改后端服务的示例:
<policies>
<inbound>
<choose>
<when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2013-05")">
<set-backend-service base-url="http://contoso.com/api/8.2/" />
</when>
<when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2014-03")">
<set-backend-service base-url="http://contoso.com/api/9.1/" />
</when>
</choose>
<base />
</inbound>
<outbound>
<base />
</outbound>
</policies>
当然,您可以采用示例并查询所需的标题;-)