首页
/ ASP.NET Core 中使用 Swashbuckle 实现 API 文档自动化

ASP.NET Core 中使用 Swashbuckle 实现 API 文档自动化

2025-07-06 04:13:53作者:明树来

什么是 Swashbuckle?

Swashbuckle 是一个流行的 .NET 库,它能自动为 ASP.NET Core Web API 生成 Swagger/OpenAPI 文档。它由三个核心组件组成:

  1. Swagger 对象模型和中间件:提供 SwaggerDocument 对象的 JSON 端点
  2. Swagger 生成器:直接从路由、控制器和模型构建 SwaggerDocument 对象
  3. 嵌入式 Swagger UI:可视化展示 API 文档并支持交互式测试

安装 Swashbuckle

通过 NuGet 安装

在项目中安装 Swashbuckle.AspNetCore 包:

Install-Package Swashbuckle.AspNetCore -Version 6.6.2

或者使用 .NET CLI:

dotnet add package Swashbuckle.AspNetCore -v 6.6.2

基本配置

1. 添加服务

在 Program.cs 文件中添加 Swagger 服务:

builder.Services.AddSwaggerGen();

对于最小 API 项目,还需要添加:

builder.Services.AddEndpointsApiExplorer();

2. 启用中间件

在开发环境中启用 Swagger 中间件:

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

访问 Swagger UI

启动应用后,可以通过以下 URL 访问:

  • Swagger JSON 文档:/swagger/v1/swagger.json
  • Swagger UI 界面:/swagger

高级配置

自定义 API 信息

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "我的API",
        Version = "v1",
        Description = "这是一个示例API",
        Contact = new OpenApiContact
        {
            Name = "开发者",
            Email = "dev@example.com"
        },
        License = new OpenApiLicense
        {
            Name = "使用许可证"
        }
    });
});

启用 XML 注释

  1. 在项目文件中启用 XML 文档生成:
<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
  1. 配置 Swagger 使用 XML 文件:
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);

使用数据注解增强文档

public class TodoItem
{
    [Required]
    public string Name { get; set; }
    
    [MaxLength(500)]
    public string Description { get; set; }
}

描述响应类型

使用 [ProducesResponseType] 属性:

[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public ActionResult<TodoItem> Create(TodoItem item)
{
    // ...
}

自定义 UI 样式

  1. 首先启用静态文件中间件:
app.UseStaticFiles();
  1. 添加自定义 CSS:
app.UseSwaggerUI(c =>
{
    c.InjectStylesheet("/swagger-ui/custom.css");
});

注意事项

  1. 在 IIS 或反向代理后使用时,建议使用相对路径 ./swagger/v1/swagger.json
  2. 默认生成 OpenAPI 3.0 规范,如需 2.0 格式可配置:
app.UseSwagger(c => c.SerializeAsV2 = true);

最佳实践

  1. 为所有公共方法和类型添加 XML 注释
  2. 使用数据注解提供额外的元数据
  3. 为所有 API 端点明确指定响应类型
  4. 考虑为大型项目使用 API 版本控制
  5. 在生产环境中限制 Swagger UI 的访问

通过以上配置,Swashbuckle 可以自动为你的 ASP.NET Core Web API 生成完整、专业的文档,大大提升 API 的可发现性和易用性。

热门内容推荐

最新内容推荐