开篇:

  现在项目的开发一般都采用前后端分离的模式,后端同学完成开发后需要给前端的同学提供详细的API接口文档说明,手动整理费事费力。那有没有解放双手的自动化工具呢?答案是肯定的。之前做.net webapi的时候使用的HelpPage来生成的API文档,到netcore这里,就是我们今天要分享的Swagger,它可以根据代码注释自动生成API描述文档,也可以通过配置生成交互式文档实现在线接口测试。

 

关于这个swagger大兄弟:

  全称:Swashbuckle.AspNetCore,开源项目,git地址:https://github.com/domaindrivendev/Swashbuckle.AspNetCore

 

目录:

  1.基本使用

    1.1 安装依赖

    1.2 startup配置

    1.3 swagger启动配置

  2.进阶使用

    2.1 接口描述

    2.2 返回类型描述

    2.3 忽略不生成到API文档

    2.4 api分组管理

    2.5 多xml文档配置

  3.扩展使用

    3.1 全局信息添加(作者、联系人、许可信息等)

    3.2 默认折叠配置

 

一、基本使用

  1.1 安装Swagger依赖

  第一种方式,程序包管理控制台:install-package Swashbuckle.AspNetCore

  NetCore WebApi项目使用Swagger生成API交互文档

  第二种方式,Nuget包管理中搜索 Swashbuckle.AspNetCore

  NetCore WebApi项目使用Swagger生成API交互文档

 

 

  1.2 startup配置

  要使用swagger生成文档,我们需要在startup的ConfigureServices 和 Configure中对其进行中间件配置

  • 在ConfigureServices中注册swagger生成器

 

1 // 注册swagger生成器,定义一个或多个文档,多个文档后边会讲到
2 services.AddSwaggerGen(c =>
3 {
4     c.SwaggerDoc("v1", new OpenApiInfo { Title = "曦昊-API说明文档", Version = "v1" });
5 });

 

  • 在Configure中启用中间件配置
 // 启用中间件以将生成的 Swagger 公开为JSON终结点
 app.UseSwagger();
 // 启用swagger-ui 中间件,指定 Swagger JSON 终结点,以来公开交互式文档
 app.UseSwaggerUI(c =>
 {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "API说明文档 V1");
 });

  至此,swagger的基本配置完成,我们可以启动应用程序,输入/swagger访问看看啦

  NetCore WebApi项目使用Swagger生成API交互文档

  我们可以看到swagger已经自动帮我们生成了项目的api接口描述文档

  

  1.3 swagger启动配置

  完成上边的步骤后,我们已经可以启动浏览/swagger访问我们的Rest Apis文档了,但是每次启动再输入swagger也太麻烦了,接下来我们把swagger设置为我们的启动地址

  文件:Properties - > launchSettings.json

  将标注位置改为“swagger”

  NetCore WebApi项目使用Swagger生成API交互文档

 

  再次启动,直接进入了我们的swagger文档页面。

 

二、进阶使用

   2.1 接口描述

  上边已经提过swagger会根据我们的注释生成文档描述信息,但并不是我们添加了注释就可以的,想要swagger正常显示我们的备注信息,除了添加注释信息外,我们还要为swagger配置包含xml描述信息

  首先按照我们平常的注释方式为接口添加注释

  NetCore WebApi项目使用Swagger生成API交互文档

 

 

 

  其次,为我们的项目配置输出xml文件(项目右键--属性--生成--输出)

  NetCore WebApi项目使用Swagger生成API交互文档

 

 

   最后在startup的ConfigureServices中配置swagger包含xml描述信息

  NetCore WebApi项目使用Swagger生成API交互文档  

    // 配置从xml文档中获取描述信息
    // 路径我们获取的项目路径+startup命名空间(也可以直接写生成的xml名称)
    var filePath = Path.Combine(System.AppContext.BaseDirectory, typeof(Startup).Assembly.GetName().Name + ".xml");
    c.IncludeXmlComments(filePath);
View Code

相关文章: