咱们很快乐地发表.NET 5 反对 Azure Functions OpenAPI 扩大啦!

往年 5 月,在 Build大会 上,Azure Functions OpenAPI的性能反对(预览版)正式发表。过后,它最高反对 v3 运行时——.NET Core 3.1 版本。最近,它公布了 .NET 5 隔离工作器反对包作为预览。在这篇文章中,我将回顾如何应用它并将其部署到 Azure。

留神:您能够在此 GitHub 存储库中找到本文中应用的示例代码:https://github.com/justinyoo/...

在 .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/swa...端点,您将看到Swagger UI页面。

当初已正确施行具备 OpenAPI 性能的 Azure Function 利用。

部署Azure Fuuction APP-Windows

你确认你的 Azure Function 利用工作失常。当初须要部署该我的项目。 首先,单击解决方案资源管理器中的“公布”菜单。

抉择“Azure”,而后抉择“Azure Functions App (Windows)”。

您能够应用现有的 Function 应用程序实例或通过单击 按钮来创立一个新的应用程序实例。这一次,让咱们应用以后实例。

一旦部署实现,在web浏览器上关上Azure Functions URL,你就会看到Swagger UI页面。

部署Azure Function利用- Linux

这一次,让咱们将雷同的应用程序部署到Linux实例。除此之外,让咱们应用GitHub Actions。为了做到这一点,你必须将这个应用程序上传到GitHub存储库。因而,挪动到“Git Changes”窗格并创立一个Git仓库。

如果你曾经在Visual Studio中登录了GitHub,你就能够创立一个存储库并推送代码。

一旦推送了所有代码,请拜访 GitHub 以查看您的存储库是否已实际上传所有代码。

让咱们回到公布屏幕,点击“ 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/azur...上通知咱们!

参考资料

  • 进入GitHub搜寻: Azure Functions OpenAPI扩大
  • 进入Microsoft Docs搜寻:在Visual Studio中应用Azure Function和API治理集成创立无服务器API(预览版)
  • 进入MS Learn平台搜寻:Azure Functions: 发现OpenAPI和Power利用

参考链接

Build大会链接地址:

https://mybuild.microsoft.com...

Azure Functions OpenAPI的性能反对(预览版)正式发表链接地址:

https://docs.microsoft.com/en...

.NET 5 隔离工作器反对包链接地址:

https://github.com/Azure/azur...

Visual Studio链接地址:

https://visualstudio.microsof...

反对OpenAPI链接地址:

https://github.com/Azure/azur...

Azure Functions链接地址:

https://docs.microsoft.com/en...

Azure Functions OpenAPI扩大链接地址:

https://github.com/Azure/azur...

在Visual Studio中应用Azure Function和API治理集成创立无服务器API(预览版)链接地址:

https://docs.microsoft.com/en...

Azure Functions: 发现OpenAPI和Power利用链接地址:

https://www.youtube.com/playl...


扫码关注微软MSDN,获取更多微软一手技术信息和官网学习材料!