Net Core的API文档工具Swagger
一、安装swagger
新建一个net core的api项目,通过NuGet安装Swashbuckle.AspNetCore。
二、注册swagger服务
在Startup.cs中注册Swagger生成器。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
//注册Swagger生成器,定义一个和多个Swagger 文档
#region Swagger
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});
#endregion
}
启用Swagger。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} #region Swagger
//启用中间件服务生成Swagger作为JSON终结点
app.UseSwagger();
//启用中间件服务对swagger-ui,指定Swagger JSON终结点
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
#endregion app.UseHttpsRedirection();
app.UseMvc();
}
控制器如下。
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
public ActionResult<string> Get()
{
return "value";
}
[HttpPost]
public void Post([FromBody] string value)
{
}
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
启动项目,访问路径/swagger,就可以看到文档内容了,但是我们可以发现报错如下。

访问路径/swagger/v1/swagger.json可以发现,swagger需要显示绑定http方法,由于第一个get方法没有绑定所以报错了,解决方法有两个:
1、显示绑定http方法,如添加特性[HttpGet]等。
2、添加特性[ApiExplorerSettings(IgnoreApi = true)],让swagger忽略这个接口。
三、文档的描述
1、接口描述
首先需要设置文档的输出路径,进入项目的属性->生成,设置输出路径如下

然后在Startup.cs->ConfigureServices方法中设置输出路径
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
// 设置SWAGER JSON和UI的注释路径。
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
options.IncludeXmlComments(xmlPath);
});
对于接口的注释和我们平常的注释一样。
/// <summary>
/// 提交数据
/// </summary>
/// <remarks>
/// 备注:返回数据。。。
/// </remarks>
/// <param name="value">值</param>
/// <response code="200">返回成功</response>
/// <response code="500">返回失败</response>
[HttpPost]
public void Post([FromBody] string value)
{
}
对于没有注释的方法会报警告,如果不喜欢就可以在项目的属性->生成中设置隐藏

2、版本的描述
对于接口,随着版本的迭代会有很多的版本,所以通过版本的描述可以更简单的找到对应的接口。对于swagger可以添加多个文档的描述并且设置多个终结点显示不同版本的接口文档。
public void ConfigureServices(IServiceCollection services)
{
//注册Swagger生成器,定义一个和多个Swagger 文档
#region Swagger
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1", Contact = new Contact { Name = "小小开发者", Email = " think@mr_lv" } });
options.SwaggerDoc("v2", new Info { Title = "My API", Version = "v2", Contact = new Contact { Name = "小小开发者", Email = " think@mr_lv" } });
});
#endregion
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
#region Swagger
//启用中间件服务生成Swagger作为JSON终结点
app.UseSwagger();
//启用中间件服务对swagger-ui,指定Swagger JSON终结点
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
options.SwaggerEndpoint("/swagger/v2/swagger.json", "v2");
});
#endregion
}
这里要特别注意不同的版本名称对应不同的终结点。不对应会导致一直只有一种的尴尬。当然我们的接口也需要设置属于那个版本通过特性[ApiExplorerSettings(GroupName = "v1")]。如果不设置那这任何版本中都会出现。效果如下:

四、swagger其他补充
Net Core的API文档工具Swagger的更多相关文章
- API文档工具-Swagger的集成
最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...
- .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger
.Net Core3.0 WebApi 项目框架搭建:目录 为什么使用Swagger 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.后端分离的形态,而且前端技术和后端技 ...
- Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...
- .NET Core WebApi帮助文档使用Swagger生成Api说明文档
Swagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为什么选择 ...
- 开源的API文档工具框架——Swagger简介
初次接触Swagger是在2017年5月,当时公司正好要对整套系统架构进行重新设计,有同事推荐用这个技术框架来规范后台接口的API文档.当时因为架构重构,涉及改造的技术点太多,一时也就没太多精力,把S ...
- 开源API文档工具- swagger2 与 smart-doc 比较 与 使用
工具开源地址 swagger2 : https://swagger.io/ smart-doc: https://www.oschina.net/p/smart-doc 国产 两者的比较 swagg ...
- .NET Core:API文档
安装:Swashbuckle.AspNetCore 启用 XML 注释:右键单击“解决方案资源管理器”中的项目,然后选择“属性”.勾选“生成”选项卡的“输出”部分下的“XML 文档文件”框. 将 Sw ...
- api文档工具
平台选型 Apidoc 文档参考:http://apidocjs.com 优点 文档齐全,操作简单,ui清晰,代码注解查询性强,语言支持多元化, ...
- ant design pro (十五)advanced 使用 API 文档工具
一.概述 原文地址:https://pro.ant.design/docs/api-doc-cn 在日常开发中,往往是前后端分离的,这个时候约定好一套接口标准,前后端各自独立开发,就不会被对方的技术难 ...
随机推荐
- 微信pc端和手机上传处理
一.原因 在微信通过电脑版和浏览器登录时,调用了微信上传的接口,wx.getLocalImgData或返回失败. 没办法,只有处理当电脑上传时,使用ajaxuploadfile上传. 二.方法 fun ...
- spring+activemq实战之配置监听多队列实现不同队列消息消费
摘选:https://my.oschina.net/u/3613230/blog/1457227 摘要: 最近在项目开发中,需要用到activemq,用的时候,发现在同一个项目中point-to-po ...
- Java 匿名类和lambda表达式
一.匿名内部类 一个匿名内部类是一个没有名字的内部类.它将进一步定义一个内部类以及创建一个内部类的实例. 内部类处理器可以使用匿名内部类进行代码简化. 匿名内部类的语法如下所示: new SuperC ...
- Android判断com.android.camera.action.CROP是否存在
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/225 最近线上报错,有个用户连续crash了10次左右,查 ...
- java月考题JSD1908第二次月考(含答案和解析)
考试 .container { clear: both; margin: 0 auto; text-align: left; /*width: 1200px;*/ } .container:after ...
- JavaScript图形实例:纺织物图案
1.简单纺织物图案 先在HTML页面中设置一个画布. <canvas id="myCanvas" width="360" height="240 ...
- linux的常用命令(一)
目录切换命令: cd切换目录 cd /usr 切换到usr目录 cd .. 切换到上一层目录 cd ../.. 调到当前目录的上上两层 cd / 切换到系统根目录 cd ~ ...
- Python项目搬迁,快捷导出环境依赖包到requirements.txt
项目搬迁的时候,需要把当前的环境依赖包导出,然后到部署项目的服务器上安装依赖. 我们可以通过下面的命令执行,把依赖包导出到requirements.txt文件里. 生成requirements.txt ...
- Flask 教程 第十四章:Ajax
本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...
- Git实战指南----跟着haibiscuit学Git(第八篇)
笔名: haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...