我可以在 Azure API 管理上调用不同的后端吗
Can I call different backend on Azure API Management
我正在尝试实现这一点,当我根据请求调用 APIM 端点时 headers 它应该是不同的端点。例如,当用户调用 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>
当然,您可以采用示例并查询所需的 headers ;-)
我正在尝试实现这一点,当我根据请求调用 APIM 端点时 headers 它应该是不同的端点。例如,当用户调用 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>
当然,您可以采用示例并查询所需的 headers ;-)