.NET Core配置Swagger

news/2024/10/9 12:33:44/

配置Swagger主要方便测试接口

无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其实无论是前端调用后端,还是后端调用后端,都期望有一个好的接口文档。但是这个接口文档对于程序员来说,就跟注释一样,经常会抱怨别人写的代码没有写注释,然而自己写起代码起来,最讨厌的,也是写注释。所以仅仅只通过强制来规范大家是不够的,随着时间推移,版本迭代,接口文档往往很容易就跟不上代码了。发现了痛点就要去找解决方案,解决方案用的人多了,就成了标准的规范,这就是Swagger。

1.创建.NET Core API 项目

我用的开发工具是Visual Studio 2022,选择如下模板创建即可。
在这里插入图片描述

2.安装Swashbuckle.AspNetCore包

打开NuGet界面,搜索Swashbuckle.AspNetCore,安装即可。
在这里插入图片描述

3.添加Swaggers文件

Swaggers文件下载链接
提取码:2g9d
在这里插入图片描述
将下载的文件放到根目录,如下所示:
在这里插入图片描述

4.修改Program.cs文件

新建的.NET Core API 项目中Program.cs如下:
在这里插入图片描述
修改builder.Services.AddSwaggerGen();如下:

builder.Services.AddSwaggerGen(c =>
{c.SwaggerDoc("1.0", new OpenApiInfo{Version = "1.0",Title = "WebApplication1 接口文档",Description = "Documents for WebApplication1,用于三方接口调用",Contact = new OpenApiContact { Name = "测试", Email = "ceshi@qq.com" }});c.SwaggerDoc("cs", new Info { Title = "测试接口v1.0", Version = "1.0" });c.DocInclusionPredicate((docName, apiDes) =>{if (!apiDes.TryGetMethodInfo(out MethodInfo method))return false;/*使用ApiExplorerSettingsAttribute里面的GroupName进行特性标识* DeclaringType只能获取controller上的特性* 我们这里是想以action的特性为主* */var version = method.DeclaringType.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);if (docName == "v1" && !version.Any())return true;//这里获取action的特性var actionVersion = method.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);if (actionVersion.Any())return actionVersion.Any(v => v == docName);return version.Any(v => v == docName);});c.IgnoreObsoleteProperties();c.IgnoreObsoleteActions();c.DocumentFilter<HiddenApiFilter>();
});

修改app.UseSwaggerUI();如下:

app.UseSwaggerUI(c =>
{c.ShowExtensions();c.SwaggerEndpoint("/swagger/cs/swagger.json", "测试接口v1.0");
});

5.编写接口

打开控制器,[HttpGet(Name = "")]定义接口名,[ApiExplorerSettings(GroupName = "")]定义接口组
在这里插入图片描述

6.运行

项目启动如下所示,点击Try it out即可测试,Parameters即入参,Responses即出参。
在这里插入图片描述

7.发布

打开程序包管理控制台,发布命令如下(项目正在运行无法发布):

dotnet publish -o release

在这里插入图片描述
运行命令后会生成一个release文件夹。
在这里插入图片描述
打开release文件夹下的exe文件启动程序即可。


http://www.ppmy.cn/news/319672.html

相关文章

ASP.NET Core 解决控制台输出日志内容前面[40m等乱码字符

在默认我写了一个 WPF 程序去做管理 ASP.NET Core 进程的日志的时候&#xff0c;重定向输出的内容里面每一行前面都添加了很多乱码字符串。其实这是 ASP.NET Core 控制台的颜色字符&#xff0c;解决方法是禁用控制台颜色 在看到重定向的输出里面包含以下乱码字符 &#xfffd;[…

w3m的使用方法

1.安装 $sudo apt-get install w3m-img w3m 2.启动吧 $w3m www.google.cn 你就会看到熟悉的google主页了 3.一些常用的快捷键 H 显示帮助 q 退出&#xff0c;会有提示的 j,k,l,h 移动光标&#xff0c;就像vim中一样 J/K 向下/向上滚屏 < > 左右滚屏 在文本框里press Ente…

联想微型计算机m4500q,小身材大能量 ThinkCentre M4500q评测

联想在2012年六月底召开的ThinkCentre M商用新品发布会上,推出了型号为M4350q的迷你商用电脑,1升超小体积机箱配上强大的桌面级酷睿i处理器,让我们改变了对迷你电脑,对商用电脑的传统认知。 时隔两年之后,我们终于迎来了该系列的后续之作——ThinkCentre M4500q。这款产品…

Git提交去除^M

转自&#xff1a;HalfWater&#xff1b;链接&#xff1a;https://www.cnblogs.com/sdgf/p/6237847.html 一、背景 在各操作系统下&#xff0c;文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A&#xff08;LF&#xff09;&#xff0c;早期的 Mac OS 使用的是0x0D&…

core i3、core m、atom x7之间的性能区别有多大 ?

i3也有很多型号&#xff0c;低电压的和标准电压的还有不小差距呢。就当i3是低电压的&#xff0c;那core m由于可以睿频到2.6G&#xff0c;i3普遍在1.7G左右。所以睿频状态下core m要强20%以上。atom x7大概和i3多核性能差不多&#xff0c;但是由于是4核心单核性能非常弱&#x…

intel 酷睿core系列cpu的类型:U M H HQ MQ

相对于笔记本来说。一般我们说的intel系列cpu是指应用于desktop桌面版&#xff0c;embedded嵌入式版, mobile移动版 桌面版和移动版cpu对比 http://tieba.baidu.com/p/5771965156 cpu大全 http://tieba.baidu.com/p/6055792431 desktop桌面版 功耗11W-180W 台式机处理器一般用了…

一份干货|mCore虽小,五脏俱全

转自&#xff1a;https://jiaxing.19lou.com/board-53011512526634962-thread-48281514511127281-1.html http://bbs.elecfans.com/jishu_546527_1_1.html akeblock金属机器人是适合8-14周岁孩子的带有金属感的机器人&#xff0c;须要学员用螺丝刀配合完成&#xff0c;在配合…

ARM Cortex-M处理器详解

ARM Cortex-M处理器家族现在有8款处理器成员。在本文中&#xff0c;我们会比较Cortex-M系列处理器之间的产品特性&#xff0c;重点讲述如何根据产品应用选择正确的Cortex-M处理器。本文中会详细的对照Cortex-M 系列处理器的指令集和高级中断处理能力&#xff0c;以及 SoC系统级…