.net8系列-03图文并茂手把手教你配置Swagger以及实现接口版本控制

server/2024/10/18 16:47:58/

前情提要

接上篇文章,我们的应用已经创建完毕了,接口也有了,接下来我们配置显示接口注释和实现接口的版本控制

准备工作

页面展示

在创建项目的时候我们已经有了一个基础版本的Swagger,可以看到接口以及测试接口,如下图

代码展示

配置Swagger实现展示注释

添加代码注释

我们在CommonInfoController.cs文件内接口上方打三个斜线,就会自动出现注释的模板,我们把对应接口的注释写进去,这里我写了几个测试的接口注释,代码如下

using Microsoft.AspNetCore.Mvc;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System;
using System.Reflection;namespace xiaojinWebApplication.Controllers
{[ApiController][Route("[controller]")]public class CommonInfoController : ControllerBase{private readonly ILogger<CommonInfoController> _logger;public CommonInfoController(ILogger<CommonInfoController> logger){_logger = logger;}/// <summary>/// 测试接口01/// </summary>/// <returns></returns>[HttpGet(Name = "getCommonInfo")]public CommonInfo getCommonInfo(){return new CommonInfo{Date = DateOnly.FromDateTime(DateTime.Now),Text = "getCommonInfo"};}/// <summary>/// 测试接口02/// </summary>/// <param name="userId"></param>/// <returns></returns>[HttpGet][Route("{userId}")] // 特性路由public CommonInfo getCommonInfoTest(int userId){return new CommonInfo{Date = DateOnly.FromDateTime(DateTime.Now),Text = "特性路由 userId:" + userId};}/// <summary>/// 测试接口03/// </summary>/// <returns></returns>[HttpPost(Name = "postCommonInfo")]public CommonInfo postCommonInfo(){return new CommonInfo{Date = DateOnly.FromDateTime(DateTime.Now),Text = "postCommonInfo"};}/// <summary>/// 测试接口04/// </summary>/// <returns></returns>[HttpPut(Name = "putCommonInfo")]public CommonInfo putCommonInfo(){return new CommonInfo{Date = DateOnly.FromDateTime(DateTime.Now),Text = "putCommonInfo"};}/// <summary>/// 测试接口05/// </summary>/// <returns></returns>[HttpDelete(Name = "deleteCommonInfo")]public CommonInfo deleteCommonInfo(){return new CommonInfo{Date = DateOnly.FromDateTime(DateTime.Now),Text = "deleteCommonInfo"};}}
}

生成注释配置文件

步骤:右键项目-属性-生成-输出-文档文件打钩


重新build项目

\xiaojinWebApplication\bin\Debug\net8.0文件夹下会出现一个新的文件


添加配置Swagger代码

   builder.Services.AddSwaggerGen(option =>{  // Swagger 注释功能string basePath = AppContext.BaseDirectory; // 获取应用程序所在目录(绝对路径)string xmlPath = Path.Combine(basePath, "xiaojinWebApplication.xml");option.IncludeXmlComments(xmlPath);});

测试配置

重启项目,Swagger成功展示注释

Swagger版本控制

新增V2,V3版本测试Controllers

创建新版本Controllers,更改注释和返回值作为版本对照

rebuild

手动新增扩展类库




类库添加成功

创建ApiVersionInfo类
namespace xiaojinWebApplication.WebCore
{/// <summary>/// 版本类/// </summary>public static class ApiVersionInfo{public static string V1;public static string V2;public static string V3;}
}

添加版本控制代码
     builder.Services.AddSwaggerGen(option =>{  // Swagger 注释功能 --- start{string basePath = AppContext.BaseDirectory; // 获取应用程序所在目录(绝对路径)string xmlPath = Path.Combine(basePath, "xiaojinWebApplication.xml");option.IncludeXmlComments(xmlPath);}// Swagger 注释功能 --- end// Swagger 版本功能 --- start{foreach(FieldInfo field in typeof(ApiVersionInfo).GetFields()) {option.SwaggerDoc(field.Name, new Microsoft.OpenApi.Models.OpenApiInfo(){Title = $"{field.Name}:xiaojin WebAPI.",Version = field.Name,Description = $"WebApi {field.Name} 版本"});;}}// Swagger 版本功能 --- end});

UseSwaggerUI代码配置
 app.UseSwaggerUI(option => {foreach (FieldInfo field in typeof(ApiVersionInfo).GetFields()){option.SwaggerEndpoint($"/swagger/{field.Name}/swagger.json", $"{field.Name}");}});

Controllers代码配置
    [ApiExplorerSettings(GroupName = nameof(ApiVersionInfo.V2))]


注意事项

运行测试

结语

  • 今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

http://www.ppmy.cn/server/5650.html

相关文章

免费GPT-3.5部署指南

OpenAI近期宣布&#xff0c;GPT-3.5现已支持无账号使用&#xff0c;这一变化无疑为全球AI爱好者带来了福音。然而&#xff0c;由于网络和地域限制&#xff0c;国内许多朋友仍然面临着使用上的挑战。 今天&#xff0c;我将向大家推荐两个开源项目&#xff0c;它们能够帮助您在国…

OpenHarmony网络协议通信—kcp

kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径&#xff1a;./third_party/kcp 修改添加依赖的编译脚本 在/develo…

云手机助力舆情监测,智慧引领信息时代

随着信息时代的到来&#xff0c;舆情监测已成为政府、企业、高校、金融机构等各行业的必备利器。在这个信息爆炸的时代&#xff0c;如何及时准确地感知民意、把握市场动态&#xff0c;已成为各界迫切需要解决的问题。而云手机作为信息时代的新生力量&#xff0c;在舆情监测方面…

vue 常用的日历排班,带农历显示组件(2024-04-16)

显示当前月日历组件&#xff0c;里面带农历或节日显示 后面可以丰富一些国家法定节假期的业务需求 代码 js-calendar.js 文件 var lunarInfo [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, //1900-19090x04ae0, 0x0a5b6, 0…

MYSQL之增删改查(下)

前言&#xff1a; 以下是MySQL最基本的增删改查语句&#xff0c;很多IT工作者都必须要会的命令&#xff0c;也 是IT行业面试最常考的知识点&#xff0c;由于是入门级基础命令&#xff0c;所有所有操作都建立在单表 上&#xff0c;未涉及多表操作。 4.3 高级查询 4.3.1 聚合函…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

qt_standard_project_setup

qt_standard_project_setup的更先进的国际化。 这个camke命令的官方说明是&#xff1a;项目范围默认标准设置。 该命令在Qt6包的Core组件中定义&#xff0c;可以像这样加载: find_package(Qt6 REQUIRED COMPONENTS Core)这个命令是在Qt 6.3中引入的 qt_standard_project_set…

nginx反向代理及负载均衡

node1192.168.136.55Nginx主负载均衡器node3192.168.136.57Web01服务器node4192.168.136.58Web02服务器node5192.168.135.131客户端&#xff08;测试&#xff09; nginx反向代理 1. 安装nginx 三台机器都安装nginx yum install nginx -y 2. 配置用于测试的Web服务(以下操作…