ASP.NET Core 中使用Swashbuckle

在AspNet Core中Swashbuckle主要有三个核心组件:

  • Swashbuckle.AspNetCore.Swagger

  • Swashbuckle.AspNetCore.SwaggerGen

  • Swashbuckle.AspNetCore.SwaggerUI

1.Swagger中间件

首先我们需要安装一下Swashbuckle.AspNetCore NuGet包

9ead25f275d3c5d379c80e9bc4283d22.png

接着在启动项中配置Swagger中间件:

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

启用中间件:

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

启动应用程序,我们发现页面上有个链接地址:

e2dbbd87681782a5d529228ee678fd84.png

https://localhost:<port>/swagger/v1/swagger.json, 我们打开该链接地址,发现json文件正是我们上节所描述的OpenAPI 规范

https://localhost:<port>/swagger/index.html 地址是Swagger UI的默认地址,我们可以修改该地址直接指向到根目录,如下地址移除了swagger段

58c5fcff10b905f09efbe9f177e36195.png

Swagger ui 地址访问如下:

50b0c96735355778a0af7dc13d07ee26.png

默认情况下Swashbuckle生成的OpenAPI的规范是基于3.0,我们可以通过修改其版本号来向后兼容别的应用程序:

4a373b5aa65eca7757e5b4952e4c8cf8.png

2.自定义和拓展

2.1 API描述信息

我们可以在Swagger UI文档上添加一些基础描述信息,例如:作者,许可证,描述等

3cf1063490f005870b5c9f31f7c22aac.png

我们看到我们信息被添加到了页面上面:

32959af88c67062d7f8ecf829e127784.png

2.2 xml描述

在项目中启用xml描述:

ccb92fed0654de29c401a94097ae37de.png

选中之后在项目文件中会生成如下标签:

cdbf4f10da5a48a13ce7e5872f67a089.png

启用之后我们会发现产生警告:

8404f269073eb479544e0566432a9369.png

禁用该警告有两种方法

项目中禁止警告,在项目的Project中添加如下标签,这是针对整个项目警告被全部禁止掉:

91c62e76809ba84e4682a0eef738eb25.png

针对特定成员禁用警告,可以使用#pragma warning 预处理指令将代码括起来:

cfa825edcd050f4eef48d056e011bb66.png

在目录下会生成一个xml文件,我们配置一下Swagger加载这个xml文件,注意在大小写的区别针对Window和Linux

a5861f8ad870705d822557ddba0fef18.png

加载xml文件:

b8a971b6481cb73c863ac495fb971c93.png

我们看到我们的注释产生了效果:

444ceddbf79a631c89d5fba6867f9e77.png

2.3 数据注解

我们在TodoItem类中添加如下特性:

a1679ee8d1f9a96b7a950be1ab3983e1.png

在API控制器上添加[Produces("application/json")]特性,该特性表明响应的内容为application/json

821e2c6e891673bf2df23482c07a494d.png

接着我们在ProducesResponseType特性来说明Create的api返回的状态码:

a0b285408b17d08193d36ee63cbd809d.png

运行程序我们来查看一下Swagger ui会生成什么样子

f2f76c5fe4c7897c2bd8088d890f0cfb.png

下面链接地址是微软提供我们比较简短的文档告诉我们如何使我们的api文档变得更加丰富:

https://learn.microsoft.com/en-us/training/modules/improve-api-developer-experience-with-swagger/

源代码地址:

https://github.com/bingbing-gui/Asp.Net-Core-Skill/tree/master/Fundamentals/AspNetCore.Swagger/AspNetCore.Swashbuckle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值