ASP .NET Core 8集成Swagger全攻略

Swagger (现在称为 OpenAPI) 是一个用于描述 RESTful API 的规范,ASP.NET Core 内置支持通过 Swashbuckle 库生成 Swagger 文档。以下是在 ASP.NET Core 8 中实现 Swagger 的完整步骤。

1、添加Swagger NuGet 包

复制代码
dotnet add package Swashbuckle.AspNetCore

2、添加Swagger服务和JWT认证支持

cs 复制代码
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(option =>
{
    option.SwaggerDoc("v1", new OpenApiInfo
    {
        Version = "v1",
        Title = "后台管理平台 API"
    });

    //使用XML注释
    foreach (var name in Directory.GetFiles(AppContext.BaseDirectory, "*.*", SearchOption.AllDirectories).Where(f => Path.GetExtension(f).ToLower() == ".xml"))
    {
        option.IncludeXmlComments(name, includeControllerXmlComments: true);
    }

    OpenApiSecurityScheme securityScheme = new OpenApiSecurityScheme
    {
        Name = "JWT Authentication",
        Description = "Enter JWT Bearer token **_only_**",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.Http,
        Scheme = "bearer",
        BearerFormat = "JWT",
        Reference = new OpenApiReference
        {
            Id = JwtBearerDefaults.AuthenticationScheme,
            Type = ReferenceType.SecurityScheme
        }
    };
    option.AddSecurityDefinition(securityScheme.Reference.Id, securityScheme);
    option.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {securityScheme, Array.Empty<string>()}
    });
});

3、启用Swagger中间件

cs 复制代码
var app = builder.Build();

// 开发环境下启用 Swagger,通常生产环境不推荐启用Swagger
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
        options.DocumentTitle = "后台管理平台 API";
    });
}

4、启用XML文档注释

在项目文件中启用XML文档生成

cs 复制代码
<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

或者在Visual Studio打开项目的属性窗口,在"生成"选项的"输出"栏目下,勾选"文档文件"

5、在API方法上添加XML注释

cs 复制代码
/// <summary>
/// 授权认证管理
/// </summary>
public class AuthController : BaseController
{
   /// <summary>
   /// 获取版本号
   /// </summary>
   /// <returns></returns>
   [HttpGet]
   [AllowAnonymous]
   public ResponseResult<string> GetVersion()
   {
       try
       {
            return ResponseResult<string>.Success("1.0.0");
       }
       catch (Exception ex)
       {
             _logger.LogError("Get version error: {error}", ex.Message);
             return ResponseResult<string>.Fail(ex.Message);
       }
    }
}

6、运行效果

相关推荐
发粪的屎壳郎2 天前
ASP .NET Core 8结合JWT轻松实现身份验证和授权
jwt·asp .net core
crud1 个月前
Spring Boot 整合 Smart-Doc:零注解生成 API 文档,告别 Swagger
java·spring boot·swagger
大千AI助手1 个月前
5分钟玩转Swagger UI:Docker部署+静态化实战
ui·docker·容器·swagger·swaggerui
crud1 个月前
Spring Boot 3 整合 Swagger:打造现代化 API 文档系统(附完整代码 + 高级配置 + 最佳实践)
java·spring boot·swagger
掘金詹姆斯3 个月前
在线接口调试工具-swagger
java·swagger
小巫程序Demo日记3 个月前
自问自答模式(Operation是什么)
swagger
孟陬4 个月前
swaggered CLI:swagger json schema 转成 TS 代码
typescript·swagger
csdn_aspnet4 个月前
Swagger 从 .NET 9 中删除:有哪些替代方案
swagger·openapi·.net9
Bad_Shepherd4 个月前
ASP .NET Core 学习(.NET9)Serilog日志整合
asp .net core