微软官网入门:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-2.2

Swagger是一个支持Rest Api的,用于可视化。也就是说你的WebApi必须遵循RestApi架构风格,否则是无法生成Api文档的

依赖包:

Swashbuckle.Aspnetcore:用于生成Swagger文档

Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer:用户版本控制

因为接口会不断的升级,迭代,所以必然会有版本控制,这样新的版本不会影响就的版本

所以,我这里一开始就会搭建一个版本控制

创建Api项目,默认会有Value控制器,然后分别添加v1和v2文件夹,创建ManagerController

添加版本控制类,添加CustomApiVersion类

namespace SwaggerApi.SwaggerHelper
{
/// <summary>
/// 自定义版本
/// </summary>
public class CustomApiVersion
{
/// <summary>
/// Api接口版本 自定义
/// </summary>
public enum ApiVersions
{
/// <summary>
/// v1 版本
/// </summary>
v1 = ,
/// <summary>
/// v2 版本
/// </summary>
v2 = ,
}
}
}

然后在控制器上通过ApiExplorerSettings分组,就是说明该控制器是那个版本组

创建用于测试的实体类:

namespace SwaggerApi.Models
{
public class Student
{
/// <summary>
/// 用户Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用户姓名
/// </summary>
/// <example>示例</example>
public string UserName { get; set; }
/// <summary>
/// 用户名年龄
/// </summary>
public int Age { get; set; } /// <summary>
/// 性别
/// <remarks>
/// 0:男
/// 1:女
/// 2:其他
/// </remarks>
/// </summary> public Gender Gender { get; set; }
} public enum Gender
{
/// <summary>
/// 男
/// </summary>
M = ,
/// <summary>
/// 女
/// </summary>
F = ,
/// <summary>
/// 其他
/// </summary>
O =
} }

注册中间件:

services.AddSwaggerGen(opt =>
{
//遍历出全部的版本,做文档信息展示
typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
{
opt.SwaggerDoc(version, new Info
{
// {ApiName} 定义成全局变量,方便修改
Version = version,
Title = $"{ApiName} 接口文档",
Description = $"{ApiName} HTTP API " + version,
TermsOfService = "None",
Contact = new Contact
{
Name = "糯米粥",
Email = "nsky@cnblogs.com",
Url = "http://www.cnblogs.com/nsky"
}
});
// 按相对路径排序,
opt.OrderActionsBy(o => o.RelativePath); var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
opt.IncludeXmlComments(xmlPath, true);
});

使用中间件:

//允许中间件作为JSON端点为生成的Swagger提供服务。
app.UseSwagger(); //配置swaggerui信息
app.UseSwaggerUI(options =>
{
#region 单个版本控制
//options.SwaggerEndpoint("/swagger/v1/swagger.json", "Api_v1");
//s.RoutePrefix = string.Empty;
#endregion #region 多版本控制 typeof(ApiVersions).GetEnumNames().OrderByDescending(e => e).ToList().ForEach(version =>
{
options.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{ApiName} {version}");
}); //foreach (var description in provider.ApiVersionDescriptions)
//{
// options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
//}
#endregion
});

配置XML注释,右键属性,生成界面:

但如果有的方法没有xml注释,则会由1591警告信息

也可以在属性界面设置:

一起准备完成,就是在Api代码写逻辑了,为了区分v1和v2的不同

可以看到我上面用了CustomRoute自定义类,待会讲,参考网上的做法

运行项目,有2个版本的切换

路径是这样的:

如果不想输入swagger,可以修改路由,把前缀RoutePrefix 清空,即可

可以看到,values不属于任何一个版本,所以,v1和v2都包含了。算是公共的api

现在测试下:

github:https://github.com/byniqing/AspNetCore-Swagger

AspnetCore WebApi使用Swagger简单入门的更多相关文章

  1. 手把手教你AspNetCore WebApi:Swagger(Api文档)

    前言 小明已经实现"待办事项"的增删改查,并美滋滋向负责前端的小红介绍Api接口,小红很忙,暂时没有时间听小明介绍,希望小明能给个Api文档.对于码农小明来说能不写文档就尽量不要写 ...

  2. Spring Boot 2 整合Swagger简单入门

    Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. 1.pom.xml添加配置 可以到http://mvnrepository.com上搜索springfox,便可以看到Sp ...

  3. .NetCore WebApi——Swagger简单配置

    在前后端分离的大环境下,API接口文档成为了前后端交流的一个重点.Swagger让开发人员摆脱了写接口文档的痛苦. 官方网址:https://swagger.io/ 在.Net Core WebApi ...

  4. ASP.NET Core WebAPI帮助页--Swagger简单使用1.0

    1.什么是Swagger? Swagger是一个规范且完整的框架,提供描述.生产.消费和可视化RESTful API,它是为了解决Web API生成有用文档和帮助页的问题.   2.为啥选用swagg ...

  5. Swagger UI in AspNetCore WebAPI

    Swagger其实包含了三个部分,分别是Swagger Editor文档接口编辑器,根据接口文档生成code的Swagger Codegen,以及生成在线文档的Swagger UI.在AspNetCo ...

  6. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  7. ASP.NET Core WebApi使用Swagger生成api

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  8. 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...

  9. ASP.NET WebAPI使用Swagger生成测试文档

    ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...

随机推荐

  1. IDEA上创建 Maven SpringBoot + zookeeper +dubbo 实例

    概述 首先声明,本文是学习总结类型的博客内容,如有雷同纯属学习.本位主要结合zookeeper和dubbo做个简单实例.目前来说,一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越 ...

  2. java集成swagger

    概览: java集成Swagger Swagger-UI的使用 Springboot跨域请求的访问解决 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 W ...

  3. 微信小程序--家庭记账本开发--05

    界面跳转 在微信小程序中,按钮也是<button></button>标签,它是通过bindtap属性来绑定点击事件: <view class="usermott ...

  4. css3实现水平垂直居中

    1.transform实现居中(未设宽高) <div id="wrap">内容</div> <style> #wrap{ padding:50p ...

  5. 【Codeforces】【网络流】【线段树】【扫描线】Oleg and chess (CodeForces - 793G)

    题意: 给定一个n*n的矩阵,一个格子上可以放一个车.其中有q个子矩阵,且q个子矩阵互不相交或者是重叠(但边界可以衔接).这q个子矩阵所覆盖的地方都是不能够放车的.车可以越过子矩阵覆盖的地方进行攻击( ...

  6. JDBC API 可滚动可编辑的结果集

    JDBC的API中的链接数据和创建statement并且执行读取ResultSet大家已经很熟悉了,这边介绍设置statement的属性使结果集可以移动并且进行编辑同步回数据库. Statement ...

  7. [LeetCode] Subdomain Visit Count 子域名访问量统计

    A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...

  8. llinux挂载多个光驱

    因为u盘量产,一个u盘两启,所以linux需要访问多个cdrom(一个物理光驱,一个虚拟光驱),本来一位无法使用,看了看/dev目录下面, [root@linux-node3 cdrom]$ ll / ...

  9. Linux系统安装tomcat

    1.首先下载tomcat:http://tomcat.apache.org/download-60.cgi 2.解压缩tar.gz文件: tar -xzvf xxxxxxx/apache-tomcat ...

  10. ELK之使用packetbeat分析网络包流量

    介绍 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使用, ...