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

.net core webapi 添加 swagger 调试

.net core webapi 添加 swagger 调试

开发环境:Visual Studio 2019

为解决前后端苦于接口文档与实际不一致、维护和更新文档的耗时费力等问题,swagger应运而生,同时也解决了接口测试问题。话不多说,直接说明应用步骤。

  1. 新建一个ASP.NET Core Web API应用程序,版本选择.ASP.NET Core 3.1;
  2. 通过Nuget安装包:Swashbuckle.AspNetCore,当前示例版本5.5.0;
  3. 在Startup类的ConfigureServices方法内添加以下注入代码:
services.AddSwaggerGen(c=>{c.SwaggerDoc("v1",newOpenApiInfo{Title="My API",Version="v1",Description="API文档描述",Contact=newOpenApiContact{Email="5007032@qq.com",Name="测试项目",//Url = new Uri("http://t.abc.com/")},License=newOpenApiLicense{Name="BROOKE许可证",//Url = new Uri("http://t.abc.com/")}});});
  1. Startup类的Configure方法添加如下代码:
//配置Swaggerapp.UseSwagger();app.UseSwaggerUI(c=>{c.SwaggerEndpoint("/swagger/v1/swagger.json","My API V1");c.RoutePrefix="api";// 如果设为空,访问路径就是根域名/index.html,设置为空,表示直接在根域名访问;想换一个路径,直接写名字即可,比如直接写c.RoutePrefix = "swagger"; 则访问路径为 根域名/swagger/index.html});
  1. Ctrl+F5进入浏览,按上述配置修改路径为:http://localhost:***/api/index.html,即可看到Swagger页面:


然而到这里还没完,相关接口的注释说明我们看不到,通过配置XML文件的方式继续调整代码如下,新增代码见加粗部分:

services.AddSwaggerGen(c=>{c.SwaggerDoc("v1",newOpenApiInfo{Title="My API",Version="v1",Description="API文档描述",Contact=newOpenApiContact{Email="5007032@qq.com",Name="测试项目",//Url = new Uri("http://t.abc.com/")},License=newOpenApiLicense{Name="BROOKE许可证",//Url = new Uri("http://t.abc.com/")}});varxmlFile=$"{Assembly.GetExecutingAssembly().GetName().Name}.xml";varxmlPath=Path.Combine(AppContext.BaseDirectory,xmlFile);c.IncludeXmlComments(xmlPath);});

上述代码通过反射生成与Web API项目相匹配的XML文件名,AppContext.BaseDirectory属性用于构造 XML 文件的路径,关于OpenApiInfo内的配置参数用于文档的一些描述,在此不作过多说明。
然后右键Web API项目、属性、生成,配置XML文档的输出路径,以及取消不必要的XML注释警告提醒(增加1591):

这样,我们以三斜杠(///)方式给类方法属性等相关代码添加注释后,刷新Swagger页面,即可看到注释说明。
如果不想将XML文件输出为debug下的目录,譬如想要放在项目根目录(但不要修改成磁盘绝对路径),可调整相关代码如下,xml文件的名字也可以改成自己想要的:

varbasePath=Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录varxmlPath=Path.Combine(basePath,"CoreAPI_Demo.xml");c.IncludeXmlComments(xmlPath,true);

同时,调整项目生成的XML文档文件路径为:…\CoreAPI_Demo\CoreAPI_Demo.xml

  1. 隐藏相关接口
    对于不想暴漏给Swagger展示的接口,我们可以给相关Controller或Action头加上:[ApiExplorerSettings(IgnoreApi = true)]

  2. 调整系统默认输出路径
    项目启动后,默认会访问自带的weatherforecast,如果想调整为其他路径,譬如打开后直接访问Swagger文档,那么调整Properties目录下的launchSettings.json文件,修改launchUrl值为api(前述配置的RoutePrefix值):

{"$schema":"http://json.schemastore.org/launchsettings.json","iisSettings":{"windowsAuthentication":false,"anonymousAuthentication":true,"iisExpress":{"applicationUrl":"http://localhost:7864","sslPort":0}},"profiles":{"IIS Express":{"commandName":"IISExpress","launchBrowser":true,"launchUrl":"api","environmentVariables":{"ASPNETCORE_ENVIRONMENT":"Development"}},"CoreApi_Demo":{"commandName":"Project","launchBrowser":true,"launchUrl":"api","applicationUrl":"http://localhost:5000","environmentVariables":{"ASPNETCORE_ENVIRONMENT":"Development"}}}}

原文地址: https://wuyaogexing.com/70/1138699.html#_label0

http://www.cnnetsun.cn/news/3134336.html

相关文章:

  • 融云荣获「2023 中国数字生态通信领军企业」奖
  • Vue3-Eslint配合prettier完成代码风格配置
  • AppShark静态污点分析:Android应用安全深度检测实战指南
  • Dify大模型接入实战:从云端API到本地部署的完整指南
  • 三步搞定跨语言障碍:STranslate翻译工具完全指南
  • AI 学习路径推荐:别把薄弱点变成焦虑清单
  • Vanna 2.0企业级自然语言SQL生成架构解析与生产环境部署实战
  • Beep-Beep用户端界面设计:从UI组件到完整交互流程详解
  • Vendure插件系统完全指南:现代无头电商架构的扩展核心
  • 告别硬盘混乱:12个Krokiet工具让你轻松找回50GB空间
  • Crucible与LLVM集成教程:构建C/C++程序的符号验证流程
  • tools.cli高级技巧:如何优雅处理复杂命令行参数与子命令
  • MZmine 3终极指南:如何免费快速处理质谱数据的完整解决方案
  • 计算机毕业设计之jsp浪淘音乐网站的设计与实现
  • 炉石传说终极增强插件:HsMod 55个功能完整指南与快速配置教程
  • 【免费下载】 E-Hentai-Downloader:一键下载E-Hentai图库的利器
  • 解锁iOS设备潜能:palera1n越狱工具完整指南
  • Crucible高级技巧:提升符号模拟效率的10个实用方法
  • 从源码到二进制:揭秘readpe的libpe核心库设计与实现原理
  • AES-CBC数据解密实战:独立密钥、IV与跨平台对接全解析
  • HsMod终极指南:如何用BepInEx框架打造个性化炉石传说体验
  • 如何让AI告别平庸设计:Taste-Skill完整使用指南与实战技巧
  • 终极Blender资源大全:200+免费插件与素材库完整指南
  • 5步构建智能金融交易大脑:TradingAgents多智能体框架实战指南
  • Ornith-1.0-9B-MTP-GGUF量化版本对比:Q4_K_M、Q8_0还是IQ系列?哪款最适合你的硬件
  • ZFS-inplace-rebalancing安全使用指南:避免数据丢失的关键步骤
  • HsMod:基于BepInEx框架的炉石传说功能增强插件技术解析
  • 免费歌词批量获取工具:3分钟搞定网易云QQ音乐歌词整理
  • Windows Research Kernel (WRK) 与Linux内核对比:两大操作系统内核设计的差异分析
  • 运动增肌学习笔记