微软官网入门: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. AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹

    1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd  本地下载 ...

  2. websocket-heartbeat-js心跳检测库正式发布

    前言: 两年前写了一篇websocket心跳的博客——初探和实现websocket心跳重连.  阅读量一直比较大,加上最近考虑写一个自己的npm包,因此就完成了一个websocket心跳的检测库.在这 ...

  3. docker+ubuntu14.04+cuda7.0

    参考链接: http://tleyden.github.io/blog/2014/10/25/docker-on-aws-gpu-ubuntu-14-dot-04-slash-cuda-6-dot-5 ...

  4. Petrozavodsk Summer-2017. Moscow IPT Contest

    A. A Place For My Head 留坑. B. New Divide 从高位到低位贪心,当这一位是$0$时,要尽量取$1$,维护高维后缀最小值进行判断即可. 时间复杂度$O((n+a)\l ...

  5. php生出随机字符串

    function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABC ...

  6. IDEA_构建Maven项目报错(1)

    构建报错: [ERROR] Plugin org.apache.maven.plugins:maven-archetype-plugin:RELEASE or one of its dependenc ...

  7. 黑盒测试实践-day02

    一.任务进展情况 了解测试环境,分析测试步骤. 二.存在的问题 对测试软件还不是很了解 三.解决方法 主要查看网上资料,请求同学帮助 四.下一步计划 先熟悉测试软件,然后进行下一步.

  8. sql server里中自增长的ID重新开始排

    dbcc checkident('tablename',reseed,0); 执行:dbcc checkident('TableA',reseed,0); 执行结束:中途报了几次插入重复键. 结论:用 ...

  9. Vue 前端面试题

    Vue 前端面试题 1. 说一下 Vue 的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合“发布者 - 订阅者”模式的方式,通过 Object.defineProperty() ...

  10. JS promise

    1.Promise是什么? Promise是抽象异步处理对象以及对其进行各种操作的组件. 2.实例化 使用new来调用Promise的构造器来进行实例化 var promise = new Promi ...