往年5月,在 Build大会上,Azure FunctionsOpenAPI的性能反对(预览版)正式发表。 过后,它最高反对 v3 运行时——.NET Core 3.1 版本。 最近,它公布了 .NET 5 隔离工作器反对包作为预览。在这篇文章中,我将回顾如何应用它并将其部署到 Azure。
留神:您能够在此 GitHub 存储库中找到本文中应用的示例代码:https://github.com/justinyoo/azfunc-openapi-dotnet
在 .NET 5 中创立 Azure Functions 应用程序
让咱们应用Visual Studio来实现这个练习。在创立应用程序时,应用".NET 5(隔离)"运行时和"Http触发器"。
而后您将找到带有默认代码的HTTP端点。当初,在解决方案资源管理器上抉择NuGet包管理器菜单。
在NuGet包管理器屏幕中,勾选"包含预公布"复选框,而后搜寻Microsoft.Azure.Functions.Worker.Extensions.OpenApi包。在撰写本文时,NuGet打包程序版本是v0.8.1-preview。
OpenAPI扩大当初曾经装置。
配置 HostBuilder
装置OpenAPI扩大之后,让咱们配置HostBuilder。首先,关上Program.cs文件并删除现有的ConfigureFunctionsWorkerDefaults()办法。这是因为该办法默认应用System.Text.Json,咱们不会应用它。
public static void Main(){ var host = new HostBuilder() // 删除以下这行 .ConfigureFunctionsWorkerDefaults() // 删除以上这行 .Build(); host.Run(); }
而后,按此程序增加ConfigureFunctionsWorkerDefaults(worker =\> worker. usenewtonsoftjson())和ConfigureOpenApi()办法。第一个办法明确申明要应用Newtonsoft.Json包,下一个导入额定的OpenAPI相干端点。
public static void Main() { var host = new HostBuilder() // Add these lines below .ConfigureFunctionsWorkerDefaults(worker => worker.UseNewtonsoftJson()) .ConfigureOpenApi() // Add these lines above .Build(); host.Run();}
留神:目前,应用 System.Text.Json 并不能保障应用程序是否失常工作。 因而,强烈推荐应用 Newtonsoft.Json。
至此,配置结束。 让咱们持续。
增加 OpenAPI 修饰符
增加 OpenAPI 相干的修饰符,如下所示。 这与现有办法完全相同,所以我不会讲得太深。
// 在上面增加OpenAPI 相干的修饰符 [OpenApiOperation(operationId: "greeting", tags: new[] { "greeting" }, Summary = "Greetings", Description = "This shows a welcome message.", Visibility = OpenApiVisibilityType.Important)] [OpenApiSecurity("function_key", SecuritySchemeType.ApiKey, Name = "code", In = OpenApiSecurityLocationType.Query)] [OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: "text/plain", bodyType: typeof(string), Summary = "The response", Description = "This returns the response")] // 在下面增加OpenAPI 相干的修饰符 [Function("Function1")] public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req, FunctionContext executionContext) { ... }
一旦你实现了修饰符的增加,你就实现了!让咱们运行这个应用程序。
运行 Swagger UI
通过输出 F5 键或单击 Visual Studio上的调试按钮运行Function应用程序。
您将看到控制台中增加了OpenAPI相干的端点。
在web浏览器上运行http://localhost:7071/api/swagger/ui端点,您将看到Swagger UI页面。
当初已正确施行具备 OpenAPI 性能的 Azure Function 利用。
部署 Azure Function App – Windows
你确认你的 Azure Function 利用工作失常。当初须要部署该我的项目。首先,单击解决方案资源管理器中的"公布"菜单。
抉择"Azure",而后抉择"Azure Functions App (Windows)"。
您能够应用现有的 Function 应用程序实例或通过单击 :heavy\_plus\_sign: 按钮来创立一个新的应用程序实例。 这一次,让咱们应用以后实例。
一旦部署实现,在web浏览器上关上Azure Functions URL,你就会看到Swagger UI页面。
部署 Azure Function 利用 - Linux
这一次,让咱们将雷同的应用程序部署到Linux实例。除此之外,让咱们应用GitHub Actions。为了做到这一点,你必须将这个应用程序上传到GitHub存储库。因而,挪动到"Git Changes"窗格并创立一个Git仓库。
如果你曾经在Visual Studio中登录了GitHub,你就能够创立一个存储库并推送代码。
一旦推送了所有代码,请拜访 GitHub 以查看您的存储库是否已实际上传所有代码。
让咱们回到公布屏幕,点击":heavy\_plus\_sign: New"按钮来创立一个新的公布配置文件。
而后会呈现一个相似的弹出窗口。这次让咱们应用"Azure Function App (Linux)"菜单。
如前所述,您能够应用现有的实例或创立新的实例。咱们就用现有的吧。
在后面的部署练习中,咱们没有GitHub存储库。因而,咱们不得不应用本地部署的办法。但这一次,咱们有GitHub存储库,这意味着咱们有抉择。因而,这次咱们不抉择雷同的部署办法,而是抉择GitHub Actions。
GitHub Actions 工作流现已主动生成。 但这须要一个新的commit。
移至"Git Changes"窗格,输出如下所示的提交音讯,单击"Commit All"按钮,而后推送更改。
当您理论拜访您的 GitHub 存储库时,您的 GitHub 操作工作流会运行buil和部署。
一旦部署完结,关上一个新的web浏览器,拜访Azure Functions应用程序URL,并发现Swagger UI页面被正确地出现。
到目前为止,咱们曾经学习了如何创立一个反对OpenAPI的Azure Functions应用程序,在.Net 5独立的工作环境中运行,并无需来到Visual Studio就将其部署到Azure。我猜实践上它也能够在。Net 6上很好运行。如果你好奇,请部署它,并在https://github.com/Azure/azure-functions-openapi-extension/issues上通知咱们!
参考资料
- Github 存储库: Azure Functions OpenAPI扩大
- Microsoft 文档:在Visual Studio中应用Azure Function和API治理集成创立无服务器API(预览版)
- Microsoft学习平台: Azure Functions: 发现OpenAPI和Power利用