ASP.NET Core Web API 文档生成指南:使用 Swagger/OpenAPI
2025-07-06 04:20:20作者:尤峻淳Whitney
什么是 Swagger/OpenAPI?
Swagger(现称为 OpenAPI)是一个与语言无关的规范,用于描述 RESTful API。它通过标准化的方式让计算机和人类都能理解 API 的功能,而无需直接查看源代码。在 ASP.NET Core 项目中,Swagger 主要能帮助我们:
- 自动生成 API 文档
- 提供交互式 API 测试界面
- 简化前后端协作流程
OpenAPI 与 Swagger 的关系
- OpenAPI 是规范标准(类似于接口定义)
- Swagger 是围绕 OpenAPI 规范的工具集(包括 UI 界面、代码生成器等)
核心组件解析
OpenAPI 规范文件
这是一个 JSON 格式的文件(通常命名为 openapi.json),它完整描述了你的 API:
{
"openapi": "3.0.1",
"info": {
"title": "示例API",
"version": "v1"
},
"paths": {
"/api/Products": {
"get": {
"summary": "获取产品列表",
"responses": {
"200": {
"description": "成功返回产品列表"
}
}
}
}
}
}
Swagger UI
这是一个可视化界面,基于 OpenAPI 规范自动生成,提供以下功能:
- API 端点可视化展示
- 交互式测试功能
- 模型定义查看
在 ASP.NET Core 中的实现方式
ASP.NET Core 主要支持两种实现方案:
- Swashbuckle - 最流行的实现方案,安装简单,功能全面
- NSwag - 另一种选择,支持从代码生成 TypeScript 客户端
基础集成步骤
-
添加 NuGet 包:
- Swashbuckle.AspNetCore(用于 Swashbuckle 方案)
-
在 Program.cs 中配置:
builder.Services.AddSwaggerGen(c => {
c.SwaggerDoc("v1", new OpenApiInfo { Title = "我的API", Version = "v1" });
});
app.UseSwagger();
app.UseSwaggerUI(c => {
c.SwaggerEndpoint("/swagger/v1/swagger.json", "我的API V1");
});
- 启用 XML 注释(增强文档):
在项目文件中添加:
<PropertyGroup> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup>
安全注意事项
为了保护 Swagger 端点,可以添加授权要求:
app.MapSwagger().RequireAuthorization();
这样访问 /swagger 端点时需要提供有效的认证令牌。
最佳实践建议
- 完善注释:使用 XML 注释为控制器和模型添加详细描述
- 版本控制:为不同 API 版本创建单独的文档
- 示例数据:为请求/响应提供示例数据
- 自定义样式:根据需要定制 Swagger UI 外观
常见问题解决
- 文档不完整:确保所有公共 API 方法都有适当的注释
- 模型未显示:检查是否所有模型类都是公共的
- 授权问题:正确配置 JWT 或其他认证方案
通过本文介绍的方法,你可以轻松地为 ASP.NET Core Web API 添加专业级的文档支持,大大提高 API 的可用性和开发效率。