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/

posted @   ABSchurke  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示