当前位置: 首页 > news >正文

ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本

本系列为个人学习 ASP .NET Core学习全过程记录,基于.NET 9 和 VS2022 ,实现前后端分离项目基础框架搭建和部署,以简单、易理解为主,注重页面美观度和后台代码简洁明了,可能不会使用过多的高级语法和扩展,后续配合Uni-APP和vue2进行Web端和安卓端开发,尽量加紧进度更新,真正的入门学习,不喜勿喷,请绕走,感谢!

一、.NET 9 环境安装下载

安装Visual Studio 2022 和 .NET 9,基础操作,不多赘述,仅附链接:
.NET9微软官网下载
Visual Studio 2022 微软官网下载

二、ASP .NET Core Web API 项目创建

在这里插入图片描述
项目名称和路径自己写
在这里插入图片描述
创建完成后直接启动查看
在这里插入图片描述
在浏览器中输入控制台黑框程序中的http地址
http://localhost:5105/WeatherForecast
地址后面的 WeatherForecast 为项目创建后默认的自带的一个Controller,自带一个Get方法,由于创建的Web API项目是没有界面的,所以直接输入Controller的名称后会自动调用Get方法,返回数据
在这里插入图片描述
运行界面:
在这里插入图片描述
可以运行则证明运行环境等东西没问题,继续进行下一步吧

三、配置Swagger

由于.NET 9 微软将Swagger去除了,所以需要手动去添加

3.1 Nuget Swashbuckle.AspNetCore包

在这里插入图片描述

3.2 添加Swagger服务

Program文件中,添加下面 region 中的代码

public class Program
{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllers();builder.Services.AddOpenApi();#region 添加Swagger服务builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();#endregionvar app = builder.Build();if (app.Environment.IsDevelopment()){app.MapOpenApi();#region 启用 Swagger app.UseSwagger();app.UseSwaggerUI();#endregion}app.UseAuthorization();app.MapControllers();app.Run();}
}

再次运行项目,选择 http 启动,浏览器地址栏中输入:
http://localhost:5105/swagger/index.html
出现如下界面,则证明Swagger引用成功,接下来就可以做更多配置了。

在这里插入图片描述

3.3 Swagger 配置接口说明注解

通过给 AddSwaggerGen 中进行配置,同时勾选项目属性中的文档文件 选项即可实现接口注解显示

 builder.Services.AddSwaggerGen(opt => {string xmlPath = Path.Combine(AppContext.BaseDirectory, "WebApp_NET9.xml");// xml 名称一般和项目名称一致即可opt.IncludeXmlComments(xmlPath);});

在这里插入图片描述
完成以上配置运行项目,出现一下页面
在这里插入图片描述
给接口参数、类属性的注释都可显示,可自行测试

3.4 Swagger 配置接口分类或接口版本

需要在 AddSwaggerGenUseSwaggerUI 中添加对应配置,同时给Controller添加ApiExplorerSettings,指定接口所属文档,配置接口分组和版本其实是一样的,只是给多个接口文档起名字,并配置接口属于哪个文档即可。
下面配置两个版本进行演示:

builder.Services.AddSwaggerGen(opt =>
{#region 配置接口注释string xmlPath = Path.Combine(AppContext.BaseDirectory, "WebApp_NET9.xml");// xml 名称一般和项目名称一致即可opt.IncludeXmlComments(xmlPath);#endregion#region 配置接口分组或版本opt.SwaggerDoc("v1", new OpenApiInfo{Version = "v1",Title = "初版本 API",Description = "初版本的API",});opt.SwaggerDoc("v2", new OpenApiInfo{Version = "v2",Title = "第二版本 API",Description = "第二版本的API",});#endregion
});
//......其余省略app.UseSwaggerUI(opt => {// v1 v2的名称对应上opt.SwaggerEndpoint($"/swagger/v1/swagger.json","v1");opt.SwaggerEndpoint($"/swagger/v2/swagger.json","v2");});

WeatherForecastController 添加 [ApiExplorerSettings(GroupName =“v1”)]
新建一个Controller 为 PersonController,并添加 [ApiExplorerSettings(GroupName =“v2”)]
在这里插入图片描述
随意 给接口添加一些注释后,启动项目
在这里插入图片描述
出现一下内容及配置好了

3.5 Swagger 结束

Swagger的基础配置结束,其他功能需要使用的时候再查也行,同时Swagger默认的样式在接口多的时候可能会不太友好,也有一些改变样式的框架,可自行搜索。
实际项目中可能有的人仅在调试的时候用一下Swagger,需要给别人提供接口文档时,可以使用PostMan或者ApiPost等应用,可一件生成外网文档或内网文档链接,配置响应示例和字段说明等,会更友好一些。
下面是一个ApiPost的示例,自行选择吧
在这里插入图片描述

相关文章:

ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本

本系列为个人学习 ASP .NET Core学习全过程记录,基于.NET 9 和 VS2022 ,实现前后端分离项目基础框架搭建和部署,以简单、易理解为主,注重页面美观度和后台代码简洁明了,可能不会使用过多的高级语法和扩展,后…...

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库: 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图,该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件,文件内容及各配置项内容如下图,需要先将配置项【skip-grant-tab…...

RK3588平台开发系列讲解(NPU篇)NPU 驱动的组成

文章目录 一、NPU 驱动组成二、查询 NPU 驱动版本三、查询 rknn_server 版本四、查询 librknn_runtime 版本沉淀、分享、成长,让自己和他人都能有所收获!😄 一、NPU 驱动组成 NPU 驱动版本、rknn_server 版本、librknn_runtime 版本以及 RKNN Toolkit 版本的对应关系尤为重…...

ESP32学习笔记_FreeRTOS(6)——Event and Notification

摘要(From AI): 这篇博客详细介绍了 FreeRTOS 中的事件组和任务通知机制,讲解了事件组如何通过位操作实现任务间的同步与通信,以及任务如何通过通知机制进行阻塞解除和数据传递。博客提供了多个代码示例,展示了如何使用事件组和任务通知在多任…...

力扣-数组-350 两个数组的交集Ⅱ

解析 与刚刚的《两个数组的交集》一样&#xff0c;只是这道题允许重复&#xff0c;将上一题的set去除即可。 代码 class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;int index1 …...

云原生第二次练习

1.判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 #!/bin/bash for ip in $(seq 1 254); doping -c 1 -W 1 "192.168.1.$ip" > /dev/null 2>&1if [ $? -eq 0 ]; thenecho "192.168.1.$ip is online&qu…...

SpringMVC复习笔记

文章目录 SpringMVC 概念和基本使用SpringMVC 简介SpringMVC 核心组件和调用流程SpringMVC 基本使用第一步&#xff1a;导入依赖第二步&#xff1a;Controller 层开发第三步&#xff1a;SpringMVC 配置类配置核心组件第四步&#xff1a;SpringMVC 环境搭建第五步&#xff1a;部…...

前端小案例——网页井字棋

前言&#xff1a;我们在学习完了HTML、CSS和JavaScript之后&#xff0c;就会想着使用这三个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——网页井字棋。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可…...

ComfyUI-PromptOptimizer:文生图提示优化节点

ComfyUI-PromptOptimizer 是 ComfyUI 的一个自定义节点&#xff0c;旨在优化文本转图像模型的提示。它将用户输入的提示转换为更详细、更多样化、更生动的描述&#xff0c;使其更适合生成高质量的图像。无需本地模型。 1、功能 提示优化&#xff1a;优化用户输入的提示以生成…...

AudioGPT全新的 音频内容理解与生成系统

AudioGPT全新的 音频内容理解与生成系统 ChatGPT、GPT-4等大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,引起了学界和业界的极大关注,也让人们看到了LLM在构建通用人工智能 (AGI) 系统方面的潜力。 现有的GPT模型具有极高的语言生成能力,是目前最…...

thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案

redis下载安装&#xff08;window版本&#xff09; 参考地址&#xff1a;https://blog.csdn.net/Ci1693840306/article/details/144214215 php安装redis扩展 参考链接&#xff1a;https://blog.csdn.net/jianchenn/article/details/106144313 解决思路&#xff1a;&#xff0…...

Hexo + NexT + Github搭建个人博客

文章目录 一、 安装二、配置相关项NexT config更新主题主题样式本地实时预览常用命令 三、主题设置1.侧边栏2.页脚3.帖子发布字数统计 4.自定义自定义页面Hexo 的默认页面自定义 404 页自定义样式 5.杂项搜索服务 四、第三方插件NexT 自带插件评论系统阅读和访问人数统计 五、部…...

使用Sum计算Loss和解决梯度累积(Gradient Accumulation)的Bug

使用Sum计算Loss和解决梯度累积的Bug 学习 https://unsloth.ai/blog/gradient&#xff1a;Bugs in LLM Training - Gradient Accumulation Fix 这篇文章的记录。 在深度学习训练过程中&#xff0c;尤其是在大批量&#xff08;large batch&#xff09;训练中&#xff0c;如何高…...

基于本地消息表实现分布式事务

假设我们有一个电商系统,包含订单服务和库存服务。当用户下单时,需要在订单服务中创建订单,同时在库存服务中扣减库存。这是一个典型的分布式事务场景,我们需要保证这两个操作要么都成功,要么都失败,以保证数据的最终一致性。 项目结构: 订单服务(Order Service)库存服务(Inv…...

Web3与加密技术的结合:增强个人隐私保护的未来趋势

随着互联网的快速发展&#xff0c;个人隐私和数据安全问题越来越受到关注。Web3作为新一代互联网架构&#xff0c;凭借其去中心化的特性&#xff0c;为个人隐私保护提供了全新的解决方案。而加密技术则是Web3的重要组成部分&#xff0c;进一步增强了隐私保护的能力。本文将探讨…...

广播网络实验

1 实验内容 1、构建星性拓扑下的广播网络,实现hub各端口的数据广播,验证网络的连通性并测试网络效率 2、构建环形拓扑网络,验证该拓扑下结点广播会产生数据包环路 2 实验流程与结果分析 2.1 实验环境 ubuntu、mininet、xterm、wireshark、iperf 2.2 实验方案与结果分析…...

Vscode——SSH连接不上的一种解决办法

一、完整报错: > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! > Someone could be eavesdropping on you right now (man-in-the...

ChatGPT大模型极简应用开发-目录

引言 要理解 ChatGPT&#xff0c;了解其背后的 Transformer 架构和 GPT 技术一路的演进则变得非常必要。 ChatGPT 背后的 LLM 技术使普通人能够通过自然语言完成过去只能由程序员通过编程语言实现的任务&#xff0c;这是一场巨大的变革。然而&#xff0c;人类通常容易高估技术…...

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间&#xff1a;2025年7月25日-27日 召开地点&#xff1a;中国哈尔滨 大会官网&#xff1a;www.jcice.org 由黑龙江大学和成都信息工程大学主办&#xff0c;江苏科技大学协办的2025年第四届信…...

重学SpringBoot3-Spring Retry实践

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-Spring Retry实践 1. 简介2. 环境准备3. 使用方式 3.1 注解方式 基础使用自定义重试策略失败恢复机制重试和失败恢复效果注意事项 3.2 编程式使用3.3 监听重试过程 监…...

GRACE数据处理避坑指南:手把手教你用MATLAB读取ICGEM的gfc文件并转成mat

GRACE数据处理实战&#xff1a;从ICGEM的gfc文件到MATLAB可操作mat文件的完整指南 GRACE卫星数据为地球物理研究提供了前所未有的重力场变化观测能力。作为科研人员&#xff0c;我们经常需要处理来自ICGEM&#xff08;International Centre for Global Earth Models&#xff09…...

ESP8266接入AWS IoT Core的SigV4+WebSocket实战指南

1. AWS IoT ESP8266 Arduino Websockets 库深度解析 1.1 项目定位与工程价值 AWS IoT ESP8266 Arduino Websockets 是一个面向资源受限嵌入式设备的轻量级物联网接入库&#xff0c;专为 ESP8266 平台在 Arduino IDE 或 PlatformIO 环境下构建安全、可靠、低开销的云连接能力而…...

Phi-4-mini-reasoning在运维领域的实战:日志智能分析与故障预警

Phi-4-mini-reasoning在运维领域的实战&#xff1a;日志智能分析与故障预警 1. 运维人员的日志分析困境 凌晨三点&#xff0c;运维工程师小王被刺耳的告警声惊醒。监控系统显示某核心服务响应时间飙升&#xff0c;但面对GB级别的日志文件&#xff0c;他不得不在数百个可能相关…...

GLM-4.5编程套餐实战:5分钟搞定Claude Code平替配置(含避坑指南)

GLM-4.5编程套餐实战&#xff1a;低成本高效替代Claude Code的完整指南 1. 为什么选择GLM-4.5作为Claude Code的替代方案 在当前的AI编程助手领域&#xff0c;Claude Code以其出色的代码生成和问题解决能力赢得了众多开发者的青睐。然而&#xff0c;其高昂的使用成本和网络稳…...

像素时装锻造坊实战:VMware环境配置与Anything-v5模型快速上手指南

像素时装锻造坊实战&#xff1a;VMware环境配置与Anything-v5模型快速上手指南 1. 为什么选择VMware部署像素时装锻造坊 当你第一次看到像素时装锻造坊的界面时&#xff0c;可能会被它独特的日系RPG风格吸引。这款基于Stable Diffusion和Anything-v5模型的图像生成工具&#…...

Sollumz:3步在Blender中制作GTA V游戏模组的完整指南

Sollumz&#xff1a;3步在Blender中制作GTA V游戏模组的完整指南 【免费下载链接】Sollumz Grand Theft Auto V modding suite for Blender. This add-on allows the creation of modded game assets: 3D models, maps, interiors, animations, etc. 项目地址: https://gitco…...

MoE架构演进全景图,从Mixtral到2026奇点大会最新动态及企业部署路线图

第一章&#xff1a;MoE架构演进全景图&#xff1a;从Mixtral到2026奇点大会的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) MoE&#xff08;Mixture of Experts&#xff09;已从早期稀疏路由实验&#xff0c;演进为支撑万亿参数模型落地的核心范式。Mixtral 8x7B 的…...

如果人类不存在,人形机器人可能是一种新形态的智慧生命——那将是人类的后继者

如果人类不存在&#xff0c;人形机器人可能是一种新形态的智慧生命——那将是人类的后继者一、从工具到后继者&#xff1a;人形机器人的身份跃迁如果人类彻底消失&#xff0c;人形机器人将从“工具”转变为“唯一留存的智能体”。这一转变的本质是&#xff1a;机器人是否能够从…...

Cosmos-Reason1-7B实际效果:离散数学归纳法证明过程结构化输出

Cosmos-Reason1-7B实际效果&#xff1a;离散数学归纳法证明过程结构化输出 提示&#xff1a;本文所有演示均基于本地部署的Cosmos-Reason1-7B推理工具&#xff0c;无需联网&#xff0c;保护隐私 1. 工具简介&#xff1a;你的本地数学推理助手 Cosmos-Reason1-7B是一个专门为逻…...

SD1.5 Archive 镜像使用全解析:Web界面操作与参数设置指南

SD1.5 Archive 镜像使用全解析&#xff1a;Web界面操作与参数设置指南 1. 开箱即用的Web界面初探 Stable Diffusion v1.5 Archive镜像最吸引人的特点就是它精心设计的Web界面&#xff0c;让用户无需任何技术背景就能快速上手AI绘画。这个界面将复杂的技术细节隐藏在简洁的UI背…...