📜  swagger 跳过端点 .net 核心 - C# (1)

📅  最后修改于: 2023-12-03 15:05:25.481000             🧑  作者: Mango

使用Swagger跳过端点 .NET Core - C#

Swagger是一个流行的API文档生成工具,可帮助开发人员更轻松地创建和维护Web API文档。在.NET Core应用程序中使用Swagger,可以方便地查看和测试API端点。

在本文中,我们将介绍如何使用Swagger跳过API端点。

安装Swagger

安装Swagger最简单的方法是将Swashbuckle NuGet包添加到你的项目中。在Visual Studio中打开NuGet包管理器控制台,运行以下命令:

Install-Package Swashbuckle.AspNetCore

安装完成后,打开Startup.cs文件并添加以下代码到ConfigureServices方法中:

// 开启Swagger
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

现在我们已经添加了Swagger到我们的应用程序中。

生成Swagger文档

在Configure方法中,将以下代码添加到中间件管道中:

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

访问应用程序并导航到https://<your-app-url>/swagger/index.html。你应该看到Swagger文档。

跳过端点

现在我们已经成功地将Swagger添加到我们的应用程序中,我们可能想要跳过一些API端点,例如授权端点或测试端点。使用Swagger,我们可以轻松地实现这一点。

在ConfigureServices方法中,找到之前添加的services.AddSwaggerGen(c => { ... }代码块。为了跳过特定的端点,我们可以使用c.Select()方法和c.SwaggerDoc()方法一起。

以下是一个跳过具有[AllowAnonymous]特性的端点的示例:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
    c.Select(type: typeof(Controllers.MyController))
        .Where(type => type.GetMethods()
            .Any(method => method.GetCustomAttributes(true)
                .OfType<AllowAnonymousAttribute>().Any()))
        .Configure((ApiDescription apiDescription) =>
        {
            apiDescription.SupportedResponseTypes.Clear();
        });
});

在上面的代码中,我们:

  • 使用c.Select()选择Controllers.MyController类。
  • 调用Where()方法来跳过AllowAnonymous特性的方法。
  • 调用Configure()方法,清除所有支持的响应类型。

现在我们已经成功地跳过了具有[AllowAnonymous]特性的MyController端点。

结论

在本文中,我们介绍了如何使用Swagger跳过API端点。使用Swagger,我们可以轻松地添加和自定义API文档,并跳过不需要显示或测试的特定API端点。