首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ASP .NET Core 3.1的Swagger中添加标题筛选器

,可以通过自定义一个实现了IOperationFilter接口的类来实现。IOperationFilter接口定义了一个方法Apply,该方法在Swagger生成文档时会被调用。

首先,创建一个名为TitleFilter的类,实现IOperationFilter接口,并在Apply方法中添加筛选器逻辑。具体代码如下:

代码语言:txt
复制
using System.Linq;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class TitleFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        var titleAttribute = context.MethodInfo.DeclaringType.GetCustomAttributes(true)
            .Union(context.MethodInfo.GetCustomAttributes(true))
            .OfType<TitleAttribute>()
            .FirstOrDefault();

        if (titleAttribute != null)
        {
            operation.Summary = titleAttribute.Title;
        }
    }
}

在上述代码中,我们首先获取了当前操作所属的类型(控制器)上的TitleAttribute特性,如果存在,则将其Title属性赋值给操作的Summary属性。这样,在Swagger文档中就会显示出标题信息。

接下来,在Startup.cs文件的ConfigureServices方法中注册TitleFilter,以便Swagger能够使用它。具体代码如下:

代码语言:txt
复制
public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
        c.OperationFilter<TitleFilter>(); // 注册TitleFilter
    });

    // ...
}

在上述代码中,我们通过调用SwaggerGenOptions的OperationFilter方法注册了TitleFilter。

最后,在Startup.cs文件的Configure方法中启用Swagger中间件,以便能够访问Swagger UI。具体代码如下:

代码语言:txt
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...

    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    });

    // ...
}

在上述代码中,我们通过调用UseSwagger和UseSwaggerUI方法启用了Swagger中间件,并指定了Swagger文档的访问路径。

至此,我们已经成功在ASP .NET Core 3.1的Swagger中添加了标题筛选器。当你在控制器或操作上使用TitleAttribute特性,并设置了相应的标题,Swagger文档中的操作就会显示出标题信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券