APIUrl 前缀不适用于 Azure APIM

Posted

技术标签:

【中文标题】APIUrl 前缀不适用于 Azure APIM【英文标题】:APIUrl prefix not working with Azure APIM 【发布时间】:2020-11-26 18:28:12 【问题描述】:

我有一个 AZURE Apim,它映射到我部署了 Web API(每个客户的单独 API)的应用服务。 我在 APIM 端点中添加了一个 API URL 前缀(客户名称),以便我可以根据客户定义端点,如下所示。 APIM 网址:http://demoapim.com apim URL 前缀:客户名称(cust1,cust2) 所以现在网址是

http://demoapim.com/cust1 http://demoapim.com/cust2

Web API 端点:http://cutomerapi.com/details

当我尝试访问http://demoapim.com/cust2/details 或http://demoapim.com/cust1/details 时, 它给出了 404.but http://demoapim.com/details 有效。 请帮助我这里缺少什么。

【问题讨论】:

【参考方案1】:

了解apim后,我有以下几点,希望对你有所帮助。

    不管你设置了多少个apim URL前缀,cust1、cust2等等。最终访问地址为/cust1/details,该地址的路由在webapp服务中是无法识别的。那么问题就来了。

    所以我认为问题不应该出在apim服务上,你应该注意的是你的webapp服务。可以重写url或者识别访问请求的cust1或cust2,并返回相应的数据。

URL 重写例如。

您的原始网址:http://demoapim.com/cust2-details

最终网址:http://demoapim.com?cust=cust2&title=details

在 webapp 服务中使用 url rewrite 会更好的满足你的业务需求。

【讨论】:

谢谢杰森。我了解您的解决方案,但我希望 cust1 作为 url 的一部分而不是作为输入参数。demoapim.com/cust2/title=details @Sachan 当然你可以在门户中设置它,但是为所有 api 设置它会花费你很长时间。 @Sachan 如果您的应用中有 10 个 API。而且你还有3个习俗,我觉得你需要在传送门里设置30次。 我对apim的了解可能不是很深,如果有更好的解决方案,可以发答案,可以帮助更多的用户。

以上是关于APIUrl 前缀不适用于 Azure APIM的主要内容,如果未能解决你的问题,请参考以下文章

Azure APIM:是不是有任何 IDE 插件可用于使用智能感知编写 Azure Policy

使用 Azure 应用网关 + APIM 进行 SSL 固定

Azure APIM URL 引发 System.Net.WebException - SSL/TLS 如何在 azure web api 和 azure APIM 中发挥作用?

从 APIM 策略获取 Azure 表存储实体

如何使用 Azure APIM 创建 OCSP 请求并验证响应?

通过 APIM 使用 Azure 功能的 REST URL