ASP.NET Core 中使用 Swashbuckle 实现 API 文档自动化
2025-07-06 04:13:53作者:明树来
什么是 Swashbuckle?
Swashbuckle 是一个流行的 .NET 库,它能自动为 ASP.NET Core Web API 生成 Swagger/OpenAPI 文档。它由三个核心组件组成:
- Swagger 对象模型和中间件:提供 SwaggerDocument 对象的 JSON 端点
- Swagger 生成器:直接从路由、控制器和模型构建 SwaggerDocument 对象
- 嵌入式 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 注释
- 在项目文件中启用 XML 文档生成:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
- 配置 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 样式
- 首先启用静态文件中间件:
app.UseStaticFiles();
- 添加自定义 CSS:
app.UseSwaggerUI(c =>
{
c.InjectStylesheet("/swagger-ui/custom.css");
});
注意事项
- 在 IIS 或反向代理后使用时,建议使用相对路径
./swagger/v1/swagger.json
- 默认生成 OpenAPI 3.0 规范,如需 2.0 格式可配置:
app.UseSwagger(c => c.SerializeAsV2 = true);
最佳实践
- 为所有公共方法和类型添加 XML 注释
- 使用数据注解提供额外的元数据
- 为所有 API 端点明确指定响应类型
- 考虑为大型项目使用 API 版本控制
- 在生产环境中限制 Swagger UI 的访问
通过以上配置,Swashbuckle 可以自动为你的 ASP.NET Core Web API 生成完整、专业的文档,大大提升 API 的可发现性和易用性。