如何为 Azure Functions v3 配置 swagger ui 页面?

Gil*_*lit 4 azure-functions openapi openapi-generator

我在 Azure 函数应用程序 (v3) 中添加了 OpenApi 支持,.ConfigureOpenApi()使用Program.Main(). 我对特定功能使用函数装饰,但如何控制 ~/api/swagger/ui 上显示的通用 API 名称、版本等?

这是我的Program.Main()代码:

        public static void Main()
        {

            var host = new HostBuilder()
                .ConfigureFunctionsWorkerDefaults(worker => worker.UseNewtonsoftJson())        
                .ConfigureOpenApi()
                .ConfigureServices(services =>
                    {
                        services.AddLogging();
                    }
                )
                .Build();

            host.Run();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Sas*_*sha 8

要控制 API 元信息,您应该定义一个实现的类IOpenApiConfigurationOptions(位于命名空间中Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Abstractions)。

注意:您的项目中应该只有一种IOpenApiConfigurationOptions接口的实现。类名称空间或可见性似乎并不重要。

最简单的方法是继承DefaultOpenApiConfigurationOptionsMicrosoft.Azure.WebJobs.Extensions.OpenApi.Core覆盖特定的属性。

将包含以下内容的文件添加到您的项目(并更新必要的值):

using System;
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Configurations;
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Enums;
using Microsoft.OpenApi.Models;

namespace MyApp
{
    internal class OpenApiConfigurationOptions : DefaultOpenApiConfigurationOptions
    {
        public override OpenApiInfo Info { get; set; } = new OpenApiInfo
        {
            Version = "1.0.0",
            Title = "My API",
            Description = "My API description",
            License = new OpenApiLicense
            {
                Name = "MIT",
                Url = new Uri("http://opensource.org/licenses/MIT"),
            }
        };

        public override OpenApiVersionType OpenApiVersion { get; set; } = OpenApiVersionType.V3;
    }
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到Microsoft 的示例项目