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

配置更加美观的 Swagger UI

//注册Swagger服务
private static void AddSwaggerService(IServiceCollection services){services.AddSwaggerGen(opt =>{opt.SwaggerDoc("Push", new OpenApiInfo{Version = "v1",Title = "Push API",Description = "Push API 文档",Contact = new OpenApiContact() { Name = "Yc" }});// 加载 XML 文档注释(如果有)var files = Directory.GetFiles(AppContext.BaseDirectory, "*.xml", SearchOption.TopDirectoryOnly);foreach (var file in files){opt.IncludeXmlComments(file, true);}});}// 启用Swagger和Swagger UI
private static void ConfigSwagger(IApplicationBuilder app, IWebHostEnvironment env){app.UseSwagger(opt => opt.RouteTemplate = "doc/swagger/{documentName}/swagger.json");app.UseKnife4UI(option =>{option.RoutePrefix = "doc";option.DocumentTitle = "Push API";option.SwaggerEndpoint("/doc/swagger/Push/swagger.json", "Push Docs");});}//完整Program.cs示例
internal class Program{static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);/// <summary>/// 配置跨域/// </summary>builder.Services.AddCors(options =>{options.AddPolicy("Cors", policy =>{policy.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod();});});// 配置应用程序监听所有 IP 地址上的端口builder.WebHost.UseUrls("http://0.0.0.0:5000");// 配置 Kestrel 服务器以监听所有 IP 地址builder.WebHost.ConfigureKestrel(serverOptions =>{serverOptions.ListenAnyIP(5000); // 监听端口 5000 上的所有 IP 地址serverOptions.ListenAnyIP(0); // 0 表示由操作系统动态分配端口});// 配置应用程序配置builder.Configuration.SetBasePath(Directory.GetCurrentDirectory());builder.Configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);// 将配置绑定到 PushETOptions 实例builder.Services.Configure<PushETOptions>(builder.Configuration.GetSection(PushETOptions.ConfigKey));// 注册 FreeSqlHelperbuilder.Services.AddSingleton<FreeSqlHelper>();// 注册 Swagger 服务AddSwaggerService(builder.Services);// 添加控制器支持(用于Web API)builder.Services.AddControllers();// 构建应用程序var app = builder.Build();// 启用Swagger和Swagger UIConfigSwagger(app, app.Environment);// 配置中间件管道if (app.Environment.IsDevelopment()){app.UseDeveloperExceptionPage(); // 开发环境下显示详细错误页面}app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapControllers(); // 映射控制器路由});// 运行应用程序app.Run();}private static void AddSwaggerService(IServiceCollection services){services.AddSwaggerGen(opt =>{opt.SwaggerDoc("Push", new OpenApiInfo{Version = "v1",Title = "Push API",Description = "Push API 文档",Contact = new OpenApiContact() { Name = "Yc" }});// 加载 XML 文档注释var files = Directory.GetFiles(AppContext.BaseDirectory, "*.xml", SearchOption.TopDirectoryOnly);foreach (var file in files){opt.IncludeXmlComments(file, true);}});}private static void ConfigSwagger(IApplicationBuilder app, IWebHostEnvironment env){app.UseSwagger(opt => opt.RouteTemplate = "doc/swagger/{documentName}/swagger.json");app.UseKnife4UI(option =>{option.RoutePrefix = "doc";option.DocumentTitle = "Push API";option.SwaggerEndpoint("/doc/swagger/Push/swagger.json", "Push Docs");});}}
  1. AddSwaggerService 方法

    • 此方法注册 Swagger 服务,并配置 Swagger 文档信息、安全定义(如 Bearer Token),以及其他 Swagger 相关设置。
    • opt.IncludeXmlComments(file, true); 使 Swagger 使用 XML 文档注释来生成更详细的 API 文档。
  2. ConfigSwagger 方法

    • 此方法配置了 Swagger 和 Swagger UI 的中间件,使得你可以通过 /doc 路径访问生成的 API 文档页面。
    • 使用 UseKnife4UI 是为了提供一个更加美观的 Swagger UI;如果报错请添加对应Nuget包 ; 
      using IGeekFan.AspNetCore.Knife4jUI;
  3. Main 方法中的调用

    • Main 方法中,你首先调用 AddSwaggerService(builder.Services) 来注册 Swagger 服务,然后在 app 构建之后,调用 ConfigSwagger(app, app.Environment) 来配置 Swagger 中间件。

运行后效果

  • 访问 http://localhost:5000/doc(或其他你配置的端口),你将看到 Swagger UI 页面,展示了所有 API 端点以及可用的操作。

相关文章:

配置更加美观的 Swagger UI

//注册Swagger服务 private static void AddSwaggerService(IServiceCollection services){services.AddSwaggerGen(opt >{opt.SwaggerDoc("Push", new OpenApiInfo{Version "v1",Title "Push API",Description "Push API 文档"…...

软件测试 - 基础(软件测试的生命周期、测试报告、bug的级别、与开发人员产生争执的调解方式)

一、软件测试的生命周期 测试贯穿软件的整个生命周期 软件测试的生命周期&#xff1a; 需求分析 →测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估->上线->运行维护 需求分析&#xff1a;判断用户的需求是否合理&#xff0c;是否可实现 测试计划&#xff1a;计划项…...

RTX 4070 GDDR6显存曝光:性能与成本的平衡之选

近期&#xff0c;关于NVIDIA RTX 4070新显卡的信息曝光&#xff0c;这款显卡将配备较为缓慢的GDDR6显存&#xff0c;而非更高性能的GDDR6X。这一配置的选择引发了业内的广泛关注&#xff0c;特别是在性能与成本的平衡问题上。 新版RTX 4070 OC 2X的核心特点 **1.显存类型与带…...

canvas的基础使用

canvas的基础使用 一、画一条直线二、线的属性设置三、防止多次绘制的样式污染四、闭合五、快捷绘制矩形六、绘制圆形七、绘制文字八、绘制图片js版dom版图片截取 一、画一条直线 画一条直线需要用到三个方法&#xff1a;cxt.moveTo、cxt.lineTo、cxt.stroke <canvas id&qu…...

Windows 常用网络命令之 telnet(测试端口是否连通)

文章目录 1 概述1.1 启用 telnet 2 常用命令2.1 ping&#xff1a;测试网络是否连通2.2 telnet&#xff1a;测试端口是否连通 3 扩展3.1 进入 cmd 命令3.2 cls 清屏命令 1 概述 1.1 启用 telnet telnet ip:port // 格式 telnet 10.0.24.154:8001若出现上述提示&…...

x264 编码器像素运算系列:asd8函数

x264 编码器中像素间运算 在 x264 编码器中有多种像素间的运算,如下: sad 计算:SAD(Sum of Absolute Differences,绝对差值和)是一种在图像处理和视频编码中常用的度量,用于计算两个图像块之间的差异。SAD值越小,表示两个图像块越相似。hadamard_ac计算:用于计算Hadam…...

什么是AR、VR、MR、XR?

时代背景 近年来随着计算机图形学、显示技术等的发展&#xff0c;视觉虚拟化技术得到了广泛的发展&#xff0c;并且越来越普及化&#xff0c;慢慢的也走入人们的视野。目前市场上视觉虚拟化技术的主流分为这几种 VR、AR、MR、XR。这几项技术并不是最近才出现的&#xff0c;VR的…...

Epic Games 商店面向欧盟 iPhone 用户上线

Epic Games Store 终于在欧盟推出&#xff0c;为玩家提供了不通过 App Store 就能在 iPhone上访问游戏的途径。在经历了漫长而昂贵的关于支付和竞争对手应用程序店面的法律战&#xff0c;以及公证方面的麻烦之后&#xff0c;Epic Games 成功地为App Store 带来了一个数字店面。…...

【计算机毕设项目】2025级计算机专业小程序项目推荐 (小程序+后台管理)

以下项目选题适合计算机专业大部分专业&#xff0c;技术栈主要为&#xff1a;前端小程序&#xff0c;后端Java语言&#xff0c;数据库MySQL 后台免费获取源码&#xff0c;可提供远程调试、环境安装配置服务。&#xff08;文末有联系方式&#xff09; 以下是本次部分项目推荐1…...

Fast API + LangServe快速搭建 LLM 后台

如果快速搭建一个 LLM 后台 API&#xff0c;使前端可以快速接入 LLM API。LangChain 或者 LlamaIndex 架构都可以快速集成各种大语言模型&#xff0c;本文将讲述如何通过 Fast API LangServe 快速的搭建一个后台 Rest API 服务。LLM 这些框架现在主打一个就是快速&#xff0c;…...

CSS继承、盒子模型、float浮动、定位、diaplay

一、CSS继承 1.文字相关的样式会被子元素继承。 2.布局样式相关的不会被子元素继承。&#xff08;用inherit可以强行继承&#xff09; 实现效果&#xff1a; 二、盒子模型 每个标签都有一个盒子模型&#xff0c;有内容区、内边距、边框、外边距。 从内到外&#xff1a;cont…...

使用百度文心智能体创建AI旅游助手

百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&#xff0c;可以用来创建属于自己的智能体应用&#xff0c;访问官网链接&#xff1…...

斗破C++编程入门系列之四:运算符和表达式

鸡啄米C 记住首页不迷路&#xff1a; http://www.jizhuomi.com/software/129.html 斗破观看顺序&#xff1a; https://v.haohuitao.cc/yhplay/336-1-2.html 第一季☞第二季前2集☞特别篇1☞第二季3&#xff5e;12集☞特别篇2沙之澜歌☞第三季☞第四季☞三年之约☞缘起☞年番…...

CVPR2024 | PromptAD: 仅使用正常样本进行小样本异常检测的学习提示

PromptAD: 仅使用正常样本进行小样本异常检测的学习提示 论文名称&#xff1a;PromptAD: Learning Prompts with only Normal Samples for Few-Shot Anomaly Detection 论文地址&#xff1a;https://arxiv.org/pdf/2404.05231 研究背景 异常检测&#xff08;Anomaly Detecti…...

文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug

1.文件批量上传 ApiOperation(value "文件批量上传")PostMapping("/multipleImageUpload")Transactional(rollbackFor Exception.class)public Result multipleImageUpload(ApiParam(name "files",value "文件",required true) R…...

机器学习——线性回归(sklearn)

目录 一、认识线性回归 1. 介绍 2. 多元线性回归的基本原理&#xff08;LinearRegression&#xff09; 二、多重共线性 1. 介绍 2. 多重共线性详细解释 三、岭回归&#xff08;解决多重共线性问题&#xff09; 1. 模型推导 2. 选取最佳的正则化参数取值 四、Lasso&am…...

Go 语言切片(Slice) 15

在 Go 语言中&#xff0c;切片(Slice)是一种可以容纳多个值的数据结构&#xff0c;它可以被视为一个可变的数组。切片是一个引用类型&#xff0c;它可以容纳任意类型的值&#xff0c;可以是整数、字符串、浮点数、结构体等。 切片的声明方式是使用 [] 语法&#xff0c;例如&am…...

嵌入式开发--STM32G030C8T6,写片上FLASH死机CFGBSY和写入出错

故障现象1 G0系列&#xff0c;写片上FLASH时&#xff0c;经常死机&#xff0c;而且按复位键都没用&#xff0c;属于不断电都救不回来的那种死法。这种情况一般是由硬件置位了某个标志导致&#xff0c;只有断电才能故障复原。 故障查找 检查FLASH的相关寄存器&#xff0c;发现…...

通过Fiddler抓包保存网页上的视频(包括Bilibili、B站和其他视频站)亲测可用

本文仅供学习交流用途 文中出现的信息仅为演示需要 请勿以任何方法剽窃、盗用任何视频作者的任何视频 有时候遇到一些素材想保存下来&#xff0c;但是网站不给保存&#xff0c;无论视频是否允许转载。这篇介绍一下最近发现的一个保存视频的方法。 不会介绍Fiddler了&#xf…...

企业为什么需要安装加密软件

1. 数据保护 防止数据泄露&#xff1a;加密软件通过对敏感数据进行加密处理&#xff0c;确保即使数据在传输或存储过程中被截获&#xff0c;也无法被未授权人员读取或利用&#xff0c;从而有效防止数据泄露。 完整性保护&#xff1a;加密不仅保护数据的机密性&#xff0c;还通…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...

Python的__call__ 方法

在 Python 中&#xff0c;__call__ 是一个特殊的魔术方法&#xff08;magic method&#xff09;&#xff0c;它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时&#xff08;例如 obj()&#xff09;&#xff0c;Python 会自动调用该对象的 __call__ 方法…...

云原生时代的系统设计:架构转型的战略支点

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、云原生的崛起&#xff1a;技术趋势与现实需求的交汇 随着企业业务的互联网化、全球化、智能化持续加深&#xff0c;传统的 I…...