ASP.NET OpenAPI 能够十分不便的将咱们的Web API我的项目主动文档化,除了主动文档化以外,咱们还能够利用Azure API Management将Open API主动文档化了的Web API整合到当下最火的低代码利用当中,在这篇文章中,我将向您展现如何应用Azure API Management将Azure Functions,Power Apps和Logic Apps等等Azure Service 串联在一起。Azure API Management可能利用已文档化的API定义来公开咱们的API 端点,这些端点能够轻松应用在低代码的应用程序中。来看看这有多简略:
https://www.bilibili.com/vide...

将您的API导入Azure API Management

随着Visual Studio 2019 16.9的公布,咱们减少了对公布到现有Azure API Management服务实例以及创立Azure API Management的新生产模式实例的反对,所以只有您是Azure的客户,您就能够在须要时应用API Management的监督,平安和集成性能。

当您公布一个曾经整合了Swashbukle.AspNetCore(在ASP.NET Core 5 Web API我的项目中为默认整合选项)的.NET Core API我的项目到Azure App Service的时候,Azure API Management 选项卡就会呈现在公布对话框中,你能够抉择一个现成的Azure API Management实例,也能够新建一个实例。

公布实现后,您将可能间接在Azure API Management门户中测试您的API。在这里,您还能够监测流量,管制拜访权限并将API导出到其余服务(本文的下一部分中将介绍如何将API导出到其余服务)。

注:Visual Studio中只能新建Azure API Management的生产模式实例。这是Azure API Management的轻量级,无服务器版本,按执行次数免费,每月提供100万次收费调用。如果有现有的Azure API Management实例,也能够将其导入其中。该性能可用于Azure API Management的任何服务级别。  

如果您不相熟Azure API Management,您能够在docs.microsoft.com上理解更多无关应用Visual Studio或Visual Studio Code将API公布到Azure API Management中的信息。    

Azure API Management:

https://translate.google.com/...

Azure API Management的轻量级,无服务器版本,按执行次数免费,每月提供100万次收费调用:

https://azure.microsoft.com/p...

Visual Studio:

https://translate.google.com/...

Visual Studio Code:

https://translate.google.com/...

应用您的API和Logic Apps构建工作流程

公布蕴含OpenAPI的Web API或Azure Functions(蕴含在本文后附的示例代码库)之后,就能够应用Azure Logic Apps将它们用于业务工作流,定时工作或事件触发的流程中。Logic Apps设计器会主动抉择导入现有Azure API Management服务实例中的所有API,从而轻松确定可用的API。

因为Logic Apps设计器晓得如何为我在API Management中导入的API绘制OpenAPI文档化的定义,因而很容易弄清楚我须要调用哪个API能力创立反复的库存查看流程。

应用Azure Functions扩大工作流

通过引入Azure Functions的OpenAPI扩大,您能像在WebAPI Controllers中利用NSwag和Swashbukle导出OpenAPI的形容一样, 从Azure Functions中导出你的OpenAPI形容。在示例代码中,您会发现一个告诉性能,该性能能够构建一个Adaptive Cards,总结低档产品的库存状态。应用该OpenAPI的扩大的功能属性,Azure Function就能够应用OpenAPI进行文档化形容并导入到Azure API Management了。 

public static class InventoryNotifier{ [OpenApiOperation(operationId: nameof(SendLowStockNotification), Visibility = OpenApiVisibilityType.Important)] [OpenApiRequestBody(contentType: "application/json", bodyType: typeof(Product[]), Required = true) ] [FunctionName(nameof(SendLowStockNotification))] public static async Task<IActionResult> SendLowStockNotification( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { // function code... }}

导入到Azure API Management后,咱们就能够在简单的Workflow比方Logic App中应用这些Azure Function了。比方我能够在Azure Portal中设计一个workflow, 这个workflow能够混合应用纯Web API和利用OpenAPI导出到Azure API Management的Azure Function。

示例代码库:

https://translate.google.com/...

OpenAPI:

https://translate.google.com/...

Adaptive Cards:

https://translate.google.com/...

应用您的API构建Power Apps

如果要在应用Office 365和Power Apps的环境中构建ASP.NET Core Web API和Azure Functions,Azure API Management能够充分发挥您的HTTP API开发能力。API Management APIs 能够轻松地作为自定义连接器导出到Power Platform。

在这里,我曾经开始构建一个能够分发给Microsoft 365 tenant中的任何用户的挪动应用程序。因为刚开始,所以我疾速地增加了刚刚创立的自定义连接器,该自定义连接器会将Power Platform连贯到Azure中托管的API。当我增加新的“Refresh”按钮后,鼠标放上去会呈现一个公式输入框,我在这个公式输入框里调用ClearCollect办法以革除汇合变量productsCollection ,而后应用StoreAPIs.GetProducts操作从新填充汇合。

Power Apps的长处在于,即便在设计模式下,它也能够进行数据绑定。因而,当我开发这个应用程序时,不用一遍又一遍地从新运行,数据会始终绑定到正确的控件上。

如果您对如何应用OpenAPI将您的API文档化并不理解,您能够参考咱们之前公布的内容:

  • 应用ASP.NET Core 5 Web API创立可被发现的HTTP API

    https://translate.google.com/...

  • 开源HTTP API软件包和工具

    https://translate.google.com/...

  • 应用Visual Studio Connected Services生成HTTP API客户端

    https://translate.google.com/...

  • 应用Azure API Management,Functions,Power Apps和Logic Apps构建应用程序(本文)

总结        

在这一系列文章中,咱们带您从一些确保正确应用OpenAPI对API进行文档化形容的通用指南开始,继而探讨了各种可能帮忙您更轻松地设计,构建和测试API的开源我的项目和工具。最初,向您展现了如何在各种应用程序构建和集成计划中应用这些曾经文档化形容的API。心愿这些可能带给您一些新的技巧,并给您一些灵感,帮忙您在将来的我的项目中更欢快地构建API和应用程序。

下一步是什么?    

咱们很快乐可能与您在本系列中分享整个端到端.NET HTTP API开发人员的教训。心愿您曾经看到.NET能够帮忙您构建与行业标准规范,社区我的项目以及Microsoft工具(例如Visual Studio和Azure)良好集成的高质量API。

如果您是经验丰富的.NET开发人员,则能够在.NET文档中深入研究一些更高级的主题,也能够查看此博客系列中的源代码。  

.NET文档:

https://translate.google.com/...

此博客系列中:

https://translate.google.com/...

源代码:

https://translate.google.com/...