3-Swagger 接口文档管理
Swagger 接口文档管理
Swagger是我们的好朋友,让后端不用再写文档(当然文档该写的还得写)
但是更方便我们对自己接口的测试,推荐使用Swagger 进行接口文档管理
这里简单介绍比较常用的的点,
一定要提官方文档
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-6.0&tabs=visual-studio
文档比我写的讲的详细
1.Swagger 注释
我们要把打开Xml文件生成
首先打开你项目的.csproj文件
打开方式 右键项目 -> 编辑项目文件
我们希望在每个方法后面添加介绍,以便于我们测试和前端的阅读
我们要打开XML文档文件生成
首先打开你项目的.csproj文件
打开方式 右键项目 -> 编辑项目文件
<PropertyGroup>
//加上底下这行代码
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
或者
右键项目 -> 属性 -> 生成 -> 输出 -> 文档文件 -> 勾选上生成包含API文档的文件
然后Progarm.cs 添加如下代码
builder.Services.AddSwaggerGen(options => {
//注释
var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
//第二个参数为是否显示控制器注释,我们选择true
options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename),true);
});
2.简单版本控制
首先我们创建个枚举类
/// <summary>
/// Api版本枚举类
/// </summary>
public enum ApiVersions
{
/// <summary>
/// 版本V1
/// </summary>
V1=1,
/// <summary>
/// 版本V2
/// </summary>
V2=2
}
然后添加如下代码
builder.Services.AddSwaggerGen(options => {
/*
//只有参数里的V1是要和下面配置路径保持一致,
//剩下的乱写也不报错 但是不推荐
options.SwaggerDoc("V1", new OpenApiInfo
{
Title = $"项目名",
Version = "V1",
Description = $"项目名:V1版本"
});
*/
//生成多个文档显示
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
//添加文档介绍
options.SwaggerDoc(version, new OpenApiInfo
{
Title = $"项目名",
Version = version,
Description = $"项目名:{version}版本"
});
});
});
和
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(options => {
/*
options.SwaggerEndpoint($"/swagger/V1/swagger.json",$"版本选择:V1");
*/
//如果只有一个版本也要和上方保持一致
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
//切换版本操作
//参数一是使用的哪个json文件,参数二就是个名字
options.SwaggerEndpoint($"/swagger/{version}/swagger.json",$"版本选择:{version}");
});
});
}
最后在我们的控制器上方加上特性
[ApiExplorerSettings(GroupName ="V1")]
[HttpGet]
public IEnumerable<WeatherForecast> Get(Wea weather)
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
3.添加Jwt认证功能
添加如下代码
builder.Services.AddSwaggerGen(options =>
{
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
{
Description = "在下框中输入请求头中需要添加Jwt授权Token:Bearer Token",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
BearerFormat = "JWT",
Scheme = "Bearer"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference {
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] { }
}
});
});
转载自https://bxshare.top/index.php/archives/12/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库