Azure 应用服务中托管的 API 列表的单一入口点

Posted

技术标签:

【中文标题】Azure 应用服务中托管的 API 列表的单一入口点【英文标题】:Single entry point for list of APIs hosted in Azure App Service 【发布时间】:2020-10-01 07:52:08 【问题描述】:

我在 Azure 应用服务中托管了 7 个 API(API 应用),并且我有一个当前使用所有这些 API 的客户端应用 (SPA)。为了在客户端获得更好的可维护性,我希望为所有这些 API 提供一个入口点。因此,API 不会直接暴露给客户端。

通过单一入口点,我可以验证客户端调用的真实性(AD B2C 令牌),然后将请求路由到相应的 API。在这种情况下,来自任何 API 的响应都将通过入口点返回到客户端应用程序。

我有几个想法来实现这个流程,如下所示:

    Azure API 管理适合我的用例。不过,对我来说,这项服务的成本似乎并不高。 再创建一个位于所有现有 API 前面的 API,然后它将充当来自 Web 应用程序客户端的每个请求的入口点。在这里,对于“应用服务计划”,应选择高端层以每秒处理数千个请求。我预计每秒有一千个请求。

由于我刚开始使用 Azure,我想就实现我的用例听取您的建议。请让我知道您对合适解决方案的想法。

p.s,所有 API 都是 .net core web api (3.1)

【问题讨论】:

【参考方案1】:

既然您已经取消了 API 管理,我想说创建一个 API“流量路由器”是您最好的解决方案。您可以使用 Application Gateway 之类的东西并使用 url 路由定向到池,但您必须检查 pricing 以查看它是否适合您。

但是,如果不是太难的话,我会将您的 7 个 API 放在一个 API 项目中,并为您的 API 端点设置各种控制器。如果那不可能,我当然明白。如果是这种情况,我会将所有 API 应用程序服务放在一个 VNet 和 restrict access 中,以便只有该 VNet 上的应用程序服务可以与之通信。这样,您的“流量路由器”API 应用就可以进行授权,并能够与其他 7 个 API 应用通信。

【讨论】:

以上是关于Azure 应用服务中托管的 API 列表的单一入口点的主要内容,如果未能解决你的问题,请参考以下文章

Azure API 管理 + Azure 函数和托管标识

Azure Rest API 附加现有托管磁盘

从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常

Azure 代理,请求 IIS 托管 API 时出现 CORS 错误

Azure 使用 REST api 和托管标识创建 blob 容器 - 403 错误

如何在 Azure Service Fabric 中的自托管 Web API 上配置 SSL