.net 项目中配置 Swagger

一、前言

二、Swagger

三、.net 项目中添加Swagger

1、准备工作

(1).net项目

(2)SwaggerController

(3)XML文档注释

2、安装Swagger包

3、 添加配置swagger中间件

(1)添加Swagger构造器

 (2)启用Swagger工具

(3)更改启动URL 

(4)实现效果

四、自定义Swagger配置

1、添加文档信息

2、使用XML文档注释

3、【Program.cs】完整配置


一、前言

作为一名程序员,有两件事是令我本人很头疼的:

  • 第一,是没有接口文档;
  • 第二,是让我写接口文档;

那有没有一种方法,可以自动的生成开发文档呢?

那当然是有的,就我这个小菜菜能遇到的问题,早就是被各位大佬解决了的!!!

(感谢感谢感谢~~~~~~~~)

二、Swagger

Swagger 规范在2015年,重命名为 OpenAPI 规范。

OpenAPI Specification - Version 3.1.0 | Swagger

OpenAPI 规范 (中文版)

  • 是一个开源的API设计工具和API文档生成工具;
  • 可以帮助开发人员更快、更简单的构建RESTful API;
  • 可以自动生成交互式的API文档;
  • 可以生成与API实时同步的接口文档;
  • 可以在SwaggerUI中直接进行接口测试;
  • 使得开发、测试、部署API都更加的容易便捷;

三、.net 项目中添加Swagger

1、准备工作

(1).net项目

如果在已有项目中添加Swagger的相关配置,那就一步步添加即可;

没有的话,可以新建一个.net项目,来学习研究Swagger这个伟大的工具;

  • 打开Visual Studio,创建一个新的测试项目【Zyl_Swagger_Demo】;
  • 选择【.net 8.0】;
  • 选择【启用OpenApi支持】;

刚创建好的项目启动后,会自动在浏览器中打开Swagger页面,如下图所示;

注意:

  • 如果项目跑起来后,没有显示如图所示界面,可能是因为在创建的时候,并未选择【启用OpenApi支持】的选项;
  • 新建项目时勾选了【启用OpenApi支持】的,项目中会自动安装Swagger包,并添加配置Swagger中间件;
  • 第2步(安装Swagger包)和第3步(添加配置swagger中间件)就可以省略不看了;

(2)SwaggerController

新建一个测试用的SwaggerController控制器;

【SwaggerController.cs】

using Microsoft.AspNetCore.Mvc;namespace Zyl_Swagger_Demo.Controllers
{[Route("api/[controller]/[action]")][ApiController]public class SwaggerController : ControllerBase{/// <summary>/// 两个数的四则运算/// </summary>/// <param name="a">数字a</param>/// <param name="b">数字b</param>/// <param name="type">运算符号</param>/// <remarks>/// 运算符号只能是 +、-、*、\ 中的一种/// </remarks>/// <response code="200">接口数据正常返回</response>/// <response code="400">参数传递有误</response>[HttpPost]public string Calculate(int a, int b, string type) { switch (type.Trim()) {case "+":return $"两数相加得:{a + b}";case "-":return $"两数相减得:{a + b}";case "*":return $"两数相乘得:{a + b}";case "/":return $"两数相除得:{a + b}";default:return "您输入的类型有误,请重新输入!";}}}
}

注意:在这个Controller 中已经添加了一些XML文档注释;

(3)XML文档注释

Documentation comments - C# (文档注释)

  • <summary> 用来描述接口具体功能;
  • <param> 用来描述接口参数;
  • <remarks> 用来描述接口补充信息;
  • <response> 用来描述接口响应内容;
  • ......
TagPurpose
<c>Set text in a code-like font
<code>Set one or more lines of source code or program output
<example>Indicate an example
<exception>Identifies the exceptions a method can throw
<include>Includes XML from an external file
<list>Create a list or table
<para>Permit structure to be added to text
<param>Describe a parameter for a method or constructor
<paramref>Identify that a word is a parameter name
<permission>Document the security accessibility of a member
<remarks>Describe additional information about a type
<returns>Describe the return value of a method
<see>Specify a link
<seealso>Generate a See Also entry
<summary>Describe a type or a member of a type
<typeparam>Describe a type parameter for a generic type or method
<typeparamref>Identify that a word is a type parameter name
<value>Describe a property

2、安装Swagger包

使用NuGet安装【Swashbuckle.AspNetCore】包;

3、 添加配置swagger中间件

(1)添加Swagger构造器

添加Swagger中间件到项目中;

【Program.cs】

......builder.Services.AddControllers();// 添加Swagger构造器
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();......

 (2)启用Swagger工具

在开发环境中启用Swagger中间件和SwaggerUI工具;

【Program.cs】

......if (app.Environment.IsDevelopment())
{app.UseSwagger();   // 启用Swagger中间件app.UseSwaggerUI(); // 启用SwaggerUI工具
}......

(3)更改启动URL 

更改项目启动时的URL,启动时打开SwaggerUI页面;

【launchSettings.json】

......"launchBrowser": true,
"launchUrl": "swagger",......

(4)实现效果

出现如下图所示SwaggerUI界面,则说明Swagger工具添加成功;

 emmmm......

一个开发文档如果长成这样,那看到的人员估计是要疯掉的;

虽然现在还没有我们想要的一些接口信息,但可以通过Swagger配置,添加一些扩展内容;

四、自定义Swagger配置

1、添加文档信息

// 添加Swagger构造器
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{options.SwaggerDoc("v1", new OpenApiInfo{Version = "V1", // 接口文档版本Title = "Swagger API",  // 接口文档标题Description = "这是用来测试Swagger的接口文档!",    // 接口文档描述});
});

2、使用XML文档注释

在【Program.cs】中,添加XML文档注释;

......builder.Services.AddSwaggerGen(options =>
{options.SwaggerDoc("v1", new OpenApiInfo{Version = "V1", // 接口文档版本Title = "Swagger API",  // 接口文档标题Description = "这是用来测试Swagger的接口文档!",    // 接口文档描述});// 添加XML注释var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";var xmlFilePath = Path.Combine(AppContext.BaseDirectory, xmlFileName);options.IncludeXmlComments(xmlFilePath);
});......

重新启动,就可以看到在SwapperController接口中添加的XML文档注释相关信息了。 

3、【Program.cs】完整配置

【Program.cs】

using System.Reflection;
using Microsoft.OpenApi.Models;namespace Zyl_Swagger_Demo
{public class Program{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();// 添加Swagger构造器builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen(options =>{options.SwaggerDoc("v1", new OpenApiInfo{Version = "V1", // 接口文档版本Title = "Swagger API",  // 接口文档标题Description = "这是用来测试Swagger的接口文档!",    // 接口文档描述});// 添加XML注释var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";var xmlFilePath = Path.Combine(AppContext.BaseDirectory, xmlFileName);options.IncludeXmlComments(xmlFilePath);});var app = builder.Build();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){// 启用Swagger中间件app.UseSwagger();// 启用SwaggerUI工具app.UseSwaggerUI(); }app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();}}
}

注意:一定要在【launchSettings.json】文件中更改程序的启动项; 

========================================================================

如有问题,还请各位大佬多多指点~~~

每天进步一点点~加油鸭!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp, ‍[⁠TypeError⁠]‍ “Failed to fetch dynamically imported module“ 报错解决思路

文章目录 1. 背景2. 报错3. 解决思路4. 思考参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,在使用第三方插件的过程中,出现下面的报错。 2. 报错 [plugin:vite:import-analysis] Cannot find module ‘D:/leaning/uniapp/demo/jk-uts-udp示例/uni_modules/uts-…

对于CDA一级考试该咋准备??!

一、了解考试内容和结构 CDA一级考试主要涉及的内容包括&#xff1a;数据分析概述与职业操守、数据结构、数据库基础与数据模型、数据可视化分析与报表制作、Power BI应用、业务数据分析与报告编写等。 CDA Level Ⅰ 认证考试大纲:https://edu.cda.cn/group/4/thread/174335 …

C++精解【9】

文章目录 大整数GMP概述GMP安装 [cygwin](https://cygwin.com/install.html)安装 gmpexample Eigen基本属性和运算 大整数GMP 概述 GMP GMP是一个用于任意精度算术的免费库&#xff0c;可对有符号整数、有理数和浮点数进行操作。除了运行GMP的机器的可用内存所暗示的精度外&…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab&#xff08;\t&#xff09;符号转为空格&#xff0c;tab&#xff08;\t&#xff09;符号默认的空格数是…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI研发的一款聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够基于在预训练阶段所见…

MATLAB2024a下的神经网络聚类工具箱聚类

1 打开神经网络聚类工具箱GUI界面 图1-1 2 导入训练数据 图2-1 导入训练集如图2-2&#xff0c;图2-3、图2-4所示 图2-2 图2-3 图2-4 如图2-4&#xff0c;确认无误点击确定 3 模型训练 如图3-1&#xff0c;调整验证集与测试集比例及映射大小后点击”训练“&#xff0c;开始训练…

uview文本框组件计数count报错u--textarea

报错内容&#xff1a; [Vue warn]: Error in render: “TypeError: Cannot read property ‘length’ of null” found in —> at uni_modules/uview-ui/components/u-textarea/u-textarea.vue at uni_modules/uview-ui/components/u–textarea/u–textarea.vue mp.runtime.…

浪潮信息AIStation与毕昇:让AI大模型开发变得更易用

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着世界。近日&#xff0c;毕昇大模型应用开发平台和浪潮信息AIStation智能业务生产创新平台完成兼容性互认证。二者的融合&#xff0c;不仅简化了大模型定制开发的流程&#xff…

【进阶篇-Day6:JAVA中Arrays工具类、排序算法、正则表达式的介绍】

目录 1、Arrays工具类2、排序算法2.1 冒泡排序2.2 选择排序2.3 二分查找&#xff08;折半查找&#xff09;&#xff08;1&#xff09;概念&#xff1a;&#xff08;2&#xff09;步骤&#xff1a; 3、正则表达式3.1 正则表达式的概念&#xff1a;3.2 正则表达式的格式&#xff…

Unidbg调用-补环境V3-Hook

结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {

【项目日记(二)】搜索引擎-索引制作

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.索引结构2.1创捷索引2.2根据索引查询2.3新增文档2.4内存索引保存到磁盘2.5把…

U-Net for text-to-image

1. Unet for text-to-image 笔记来源&#xff1a; 1.hkproj/pytorch-stable-diffusion 2.understanding u-net a comprehensive tutorial 3.Deep Dive into Self-Attention by Hand 4.Towards Understanding Cross and Self-Attention in Stable Diffusion for Text-Guided Im…

java大型医院绩效考核系统源码(医院为什么需要绩效机制?)医院绩效考核系统源码 医院管理绩效考核系统源码

java大型医院绩效考核系统源码&#xff08;医院为什么需要绩效机制&#xff1f;&#xff09;医院绩效考核系统源码 医院管理绩效考核系统源码 医院作为提供医疗服务的核心机构&#xff0c;其运营和管理效率直接影响到患者的就医体验、治疗效果以及医院的长期发展。因此&#xf…

构造函数的小白理解

一、实例 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;//定义一个名为Question的类&#xff0c;用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…

Unix/Linux shell实用小程序1:生字本

前言 在日常工作学习中&#xff0c;我们会经常遇到一些不认识的英语单词&#xff0c;于时我们会打开翻译网站或者翻译软件进行查询&#xff0c;但是大部分工具没有生词本的功能&#xff0c;而有生字本的软件又需要注册登陆&#xff0c;免不了很麻烦&#xff0c;而且自己的数据…

风控图算法之中心性算法(小数据集Python版)

风控图算法之中心性算法&#xff08;小数据集Python版&#xff09; 图算法在金融风控领域的应用已经超越了传统的社区发现技术&#xff0c;这些技术曾被主要用于识别和分析欺诈性行为模式&#xff0c;例如黑产团伙。当前&#xff0c;一系列图统计算法&#xff0c;包括介数中心…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数&#xff1a; EXPLODE(ARRAY)&#xff1a;将ARRAY中的每一元素转换为每一行 EXPLODE(MAP)&#xff1a;将MAP中的每个键值对转换为两行&#xff0c;其中一行数据包含键&#xff0c;另一行数据包含值 数据样例&#xff1a; 1、将每天的课程&#…

ServletConfig与ServletContext详解

文章目录 概要web.xmlServletConfig介绍ServletConfig实例ServletConfig细节ServletContext介绍ServletContext实例ServletContext细节ServletContext获得服务访问次数&#xff08;可拓展&#xff09;总结 概要 web.xml <?xml version"1.0" encoding"UTF-…

OBD诊断(ISO15031) 02服务

文章目录 功能简介请求和响应1、read-supported PIDs1.1、请求1.2、肯定响应 2、read PID value1.1、请求1.2、肯定响应 3、同时请求多个PID4、同时读取多个PID数据 Parameter definition报文示例1、单个PID请求和读取2、多个PID请求和读取 功能简介 02服务&#xff0c;即 Req…

亚太杯赛题思路发布(中文版)

导读&#xff1a; 本文将继续修炼回归模型算法&#xff0c;并总结了一些常用的除线性回归模型之外的模型&#xff0c;其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…