.NET 5 支持 Azure Functions OpenAPI 擴展啦


今年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 應用程序實例或通過單擊 ➕ 按鈕來創建一個新的應用程序實例。 這一次,讓我們使用當前實例。

一旦部署完成,在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頁面被正確地呈現。

到目前為止,我們已經學習了如何創建一個支持OpenAPIAzure Functions應用程序,在.Net 5獨立的工作環境中運行,並無需離開Visual Studio就將其部署到Azure。我猜理論上它也可以在。Net 6上很好運行。如果你好奇,請部署它,並在https://github.com/Azure/azure-functions-openapi-extension/issues上告訴我們!

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM