首页 > 其他分享 >3-Swagger 接口文档管理

3-Swagger 接口文档管理

时间:2023-01-03 23:14:17浏览次数:36  
标签:接口 V1 version 文档 new Swagger options

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/

标签:接口,V1,version,文档,new,Swagger,options
From: https://www.cnblogs.com/ABSchurke/p/17023644.html

相关文章

  • CTO也糊涂的常用术语:功能模块、业务架构、用户需求、文档
    功能模块、业务架构、需求分析、用户需求、系统分析、功能设计、详细设计、文档、业务、技术……很多被随口使用的名词,其实是含糊甚至错误的。到底含糊在哪里,错误在哪里,不仅......
  • CTO也糊涂的常用术语(01-04)文档-20180525更新
    功能模块、业务架构、需求分析、用户需求、系统分析、功能设计、详细设计、文档、业务、技术……很多被随口使用的名词,其实是含糊甚至错误的。到底含糊在哪里,错误在哪里,不仅......
  • CTO也糊涂的常用术语(01-04)用户需求、文档
    功能模块、业务架构、需求分析、用户需求、系统分析、功能设计、详细设计、文档、业务、技术……很多被随口使用的名词,其实是含糊甚至错误的。到底含糊在哪里,错误在哪里,不仅......
  • swagger-editor
    前言        上一篇文章我们有提到Swagger做接口的定义是采用yaml语言的,当然,yaml是个啥,大家自行百度。阿福在此不做赘述了。但是,今天我们要来讲的是yaml支持比较好......
  • WGCLOUD基础知识整理与学习:数据开放接口使用
    WGCLOUD服务器监测平台,有一批数据开放接口API,可以提供我们使用,用来接入我们自己的业务系统通过这些数据接口,我们可以获取到服务器主机的性能监测数据,然后将这些数据加工处理......
  • jeecgboot项目swagger2在线接口转word
    1、先找到接口文档地址2、根据url获取接口数据  3、利用在线工具进行转换生成word 在线工具地址:在线swagger转word文档      生成的word文档如下:......
  • element Ui VUE 前端实现同步调用后端接口,并等待响应后,在操作下一步
    我这里是使用文件上传的场景,主要关键字awaitasync进行同步阻塞,然后,就可以在循环中,等待响应后,在进行调用如果不等待,则前端会一次性将循环体遍历完,请求直接占满,导致其......
  • tb.trade.get接口,巨量引擎订单数据回调接口对接代码
    前言​taobao.trade.get(获取单笔交易的部分信息(性能高),该接口用于巨量引擎就是抖音头条的信息流广告,推广店铺下单,下单算作一个转化,头条和淘宝不互通。taobao.trade.full......
  • 端对端自动化测试文档
    概述官方网址:https://playwright.dev/什么是playwright?playwright,端对端自动化测试,选择该技术栈用于端对端测试,有几大原因:支持所有浏览器快速可靠的运行强大的自动......
  • Winform帮助文档(C#打开chm定位到特定页面)
    下面比较啰嗦,只一句即可:Help.ShowHelp(null,"C:\help.hcm",HelpNavigator.Topic,"index.htm")方法一:Process.Start()在没有更多需求的情况下,用这种方法可以打开chm文......