<policies>
<inbound>
<choose>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.prod.abc.com"))">
<set-backend-service base-url=https://xyz.alpha.abc.com/lead />
</when>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.uat.abc.com"))">
<set-backend-service base-url=https://xyz.uat.alpha.abc.com/lead />
</when>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.qa.abc.com"))">
<set-backend-service base-url=https://xyz.qa.alpha.abc.com/lead />
</when>
<otherwise>
<set-backend-service base-url=https://xyz.dev.alpha.abc.com/lead/>
</otherwise>
</choose>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
上述策略是否是为新加入的 Azure APIM API 设置后端 URL 的正确且最佳的方法?
或者有更好的方法来做同样的事情吗?
本质上,我希望后端uri能够根据APIM的环境动态设置。如果我在命名值中为每个环境都有一个后端 uri ...我可以动态使用它并且可以改进策略以使其更加简洁吗?
本质上,我希望后端uri能够根据APIM的环境动态设置。如果我在命名值中为每个环境都有一个后端 uri ...我可以动态使用它并且可以改进策略以使其更加简洁吗?
是的,您可以使用存储在命名值中的后端 uri,只需进行少量修改即可使用您的策略。
<policies>
<inbound>
<choose>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.prod.abc.com"))">
<set-backend-service base-url="{{BackendUrl-For-Prod}}" />
</when>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.uat.abc.com"))">
<set-backend-service base-url="{{BackendUrl-For-URL}}" />
</when>
<when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.qa.abc.com"))">
<set-backend-service base-url="{{BackendUrl-For-QA}}" />
</when>
<otherwise>
<set-backend-service base-url="{{BackendUrl-For-Dev}}" />
</otherwise>
</choose>
<base />
</inbound>
</policies>
感谢@Thomas的评论。通过使用此策略,您可以引用命名值中的后端 URL,但订阅密钥和产品对于所有环境都将相同。
如果您希望所有环境都使用相同的密钥,那么您可以使用上述策略,或者您可以根据您的环境创建单独的 API。