.net 项目中配置 Swagger

news2025/1/16 3:54:30

一、前言

二、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.coloradmin.cn/o/1885912.html

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

相关文章

提升效率就靠它们啦

Hey小伙伴们&#xff5e;&#x1f44b; 知道你们都在忙碌的工作中寻求高效的秘诀&#xff0c;今天就给大家安利五款超实用的国产工作App&#xff0c;让你的工作生活更加得心应手哦&#xff01;&#x1f4bc;✨ 1️⃣【亿可达】 作为一款自动化工具&#xff0c;亿可达被誉为国内…

数据结构-----【链表:基础】

链表基础 1、链表的理论基础 1&#xff09;基础&#xff1a; 链表&#xff1a;通过指针串联在一起的线性结构&#xff0c;每个节点由两部分组成&#xff0c;一个是数据域&#xff0c;一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个指针…

重塑电商版图:全民拼购的崛起与魅力

在数字化浪潮的推动下&#xff0c;电子商务领域正经历着前所未有的变革&#xff0c;其中&#xff0c;全民拼购作为一种创新的电商玩法&#xff0c;正逐步成为市场的新宠。本文旨在深入探讨全民拼购的核心理念、运作机制、独特优势及其引人入胜的参与方式&#xff0c;为行业内外…

如何挑选适合的无线模块?哪些方面值得关注

市场上的无线模块种类繁多&#xff0c;如LoRa模块&#xff0c;WiFi模块&#xff0c;蓝牙模块&#xff0c;UWB模块等涵盖了各种不同的通信标准和应用需求&#xff0c;为满足模块的特定需求并能实现模块最大的性能价值&#xff0c;那么在选择无线模块的时候可以考虑以下几个方面。…

跟我练习100道FPGA入门题目~(1/100)

难度指数&#xff1a;一颗星 关键词&#xff1a;组合逻辑、入门基础 题目介绍&#xff1a; 多路选择器又称为数据选择器&#xff0c;请参考真值表设计一个二选一多路选择器。 其中s为控制信号&#xff0c;d0&#xff0c;d1为两个输入信号&#xff0c;y为输出信号。当s为低电…

金蝶云星空字段之间连续触发值更新

文章目录 金蝶云星空字段之间连续触发值更新场景说明具体需求&#xff1a;解决方案 金蝶云星空字段之间连续触发值更新 场景说明 字段A配置了字段B的计算公式&#xff0c;字段B配置了自动C的计算公式&#xff0c;修改A的时候&#xff0c;触发了B的重算&#xff0c;但是C触发不…

如何利用GPT-4o生成有趣的梗图

文章目录 如何利用GPT-4o生成有趣的梗图一、引言二、使用GPT-4o生成梗图1. 提供主题2. 调用工具3. 获取图片实际案例输入输出 三、更多功能1. 创意和灵感2. 梗图知识 四、总结 如何利用GPT-4o生成有趣的梗图 梗图&#xff0c;作为互联网文化的一部分&#xff0c;已经成为了我们…

怎么找到DNS服务器的地址?

所有域都注册到域名名称服务器&#xff08;DNS&#xff09;点&#xff0c;以解析域名应指向的IP地址。此查找类似于在查找个人名称并查找其电话号码时的电话簿如何运行。如果DNS服务器设置错误或指向错误的名称服务器&#xff0c;则域可能无法加载相应的网页。 如何查找当前的…

nginx.conf的配置文件

nginx.conf 1.全局模块 worker_processes 1 工作进程数&#xff0c;设置成服务器内核数的2倍&#xff08;一般不超过8个&#xff0c;超过8个会降低性能4个 1-2个&#xff09; 处理进程的过程必然涉及配置文件和展示页面&#xff0c;也就是涉及打开文件的数量。 linux默认打…

一键AI抠图太方便啦!不会ps也能成为修图大师

引言 在数字生活中&#xff0c;抠图技能已成为一项日常且必不可少的技能。无论是需要更换证件照的背景色&#xff0c;还是想要将图像中的主体精确分离。 但并非所有人都精通Photoshop&#xff0c;而且对于简单的任务来说&#xff0c;使用Photoshop可能显得过于复杂。因此&…

手机数据恢复篇:如何在恢复出厂设置后的 iPhone 恢复短信

您可能会认为&#xff0c;在恢复出厂设置iPhone后恢复短信时&#xff0c;一切都会丢失&#xff0c;但是仍然有一些方法可以检索您的重要对话。截至 2024 年&#xff0c;数据恢复技术的进步使得从备份甚至直接从设备内存中抢救消息变得更加容易。无论是通过 iCloud、iTunes 还是…

【大数据】什么是数据融合(Data Fusion)?

目录 一、数据融合的定义 二、数据融合的类型 三、数据融合的挑战 四、数据融合的方法 五、数据融合的关键环节 1.数据质量监控指标的制定和跟踪 2.异常检测和处理机制 3.实时数据监测与反馈机制 4.协同合作与知识共享 一、数据融合的定义 数据融合&#xff08;Data Fusion&…

【linux】网络基础(2)——udp协议

文章目录 引言udp协议的特点udp的头部结构UDP的工作原理简单的UDP网络程序套接字的认识udp服务端代码udp客户端代码服务端运行 引言 用户数据报协议&#xff08;User Datagram Protocol, UDP&#xff09;是一种无连接的传输层协议。它是因特网协议家族的一部分&#xff0c;定义…

武汉星起航:无锡跨境电商加速“出海”,物流升级助品牌全球布局

随着全球化的不断深入&#xff0c;跨境电商作为数字外贸的新业态&#xff0c;正逐渐成为无锡企业拓展海外市场的重要渠道。武汉星起航关注到&#xff0c;近年来&#xff0c;无锡市通过积极推进国际物流枢纽建设&#xff0c;完善海外仓布局&#xff0c;以及各特色产业带的积极参…

《单片机》期末考试复习-学习笔记总结

题型 问答题(15分)编程题(65分)编程题1(20分)编程题2(45分)设计题(20分)一、问答题 1.1.单片机概念和特点 1.2. 51单片机的中断结构 1.3.主从式多机通讯的概念及其工作原理 多机通信是指两台以上计算机之间的数据传输,主从式多机通信是多机通信系统中最简单的一种,…

Graspnet复现笔记

前言 参考文章&#xff1a;Baseline model for "GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping" (CVPR 2020).[paper] [dataset] [API] [doc] 代码仓库&#xff1a;https://github.com/graspnet/graspnet-baseline 一、确定配置 Ubunt…

基于springboot的校园商铺管理系统

功能结构图&#xff1a; 实现图&#xff1a; 后台功能&#xff1a; 商品管理 公告管理 前台页面 详情 订单 我的订单

【热门会议|稳定检索】2024年食品安全与生物技术国际会议(ICFSB 2024)

2024年食品安全与生物技术国际会议&#xff08;ICFSB 2024&#xff09; 2024 International Conference on Food Safety and Biotechnology 【重要信息】 大会地点&#xff1a;贵阳 大会官网&#xff1a;http://www.icicfsb.com 投稿邮箱&#xff1a;icicfsbsub-conf.com 【注…

从深度学习到音乐创作:AI如何重新定义音乐行业

&#x1f4d1;引言 近一个月来&#xff0c;随着几款音乐大模型的轮番上线&#xff0c;AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点&#xff0c;还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视&#xff0…