.NET webAPI中集成swagger
最近做的项目使用winform三层+webapi,对于webAPI路由文档管理一直觉得单独做一些管理比较麻烦,并且测试的时候项目内的代码测试运行起来也比较麻烦,所以在网上开始检索相关办法,发现热度比较高的两种:
1.微软 HelpPage 2.swagger
第二种方案虽然官网文档比较难找,但是有很多实例,所以开始研究第二种,给大家看看效果:
API控制器总览

action和描述

直观的接口测试

使用swagger
1.创建webapi项目解决方案
2.引用swagger nuget包
Swashbuckle、Swagger.Net.UI(如果不需要调整在线测试页面可以不添加)两个包

3.卸载重复包Swagger.Net
引用Swagger.Net.UI时会引用Swagger.Net这个包,但是Swagger.Net的功能和Swashbuckle重复了。所以我采取了卸载Swagger.Net

4.添加接口注释
完成上面三部运行项目,可以看到接口描述已经生成,浏览地址http://xxx/Swagger。但是没有接口的注释,下面添加接口注释
项目属性->勾选生成xml文档文件

修改SwaggerConfig文件
private static string GetXmlCommentsPath()
{
return System.String.Format(@"{0}\bin\WebApi.XML", System.AppDomain.CurrentDomain.BaseDirectory);
}
以上两者必须保持一致
winform通过Swagger生成的本地XML读取路由
1.在action注释的地方加上路径

2.把webAPI项目内生成的XML文档拷贝到winform项目的基路径
3.XML读取action路径方法:
/// <summary>
/// WebAPI路由方法文件
/// </summary>
public static string Path
{
get {
string _path = AppDomain.CurrentDomain.BaseDirectory + "WebAPI.xml";
return _path;
}
} /// <summary>
/// 查询XML节点
/// </summary>
/// <param name="functionname"></param>
/// <returns></returns>
public static CONFIG_FUNCTION ReadNodeXML(string functionname)
{
try
{
string controllerName;
CONFIG_FUNCTION model = new CONFIG_FUNCTION();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Path);
XmlNodeList nodeList1 = xmlDoc.SelectSingleNode("doc").ChildNodes;//获取Controllers节点的所有子节点 members
XmlNodeList nodeList = nodeList1[1].SelectNodes("member");
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
string name= xe.GetAttribute("name").ToString();
if (name.Contains("Controller.") && name.Contains("("))
{
controllerName = name.Substring(name.IndexOf("Controller.") + 11, (name.IndexOf("(") - name.IndexOf("Controller.") - 11));
if (controllerName == functionname)
{
model.FUNCTIONNAME = controllerName;
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "url")//如果找到
model.FUNCTIONPATH = xe2.InnerText;
}
}
}
}
return model;
}
catch (Exception ex)
{
throw ex;
}
}
总结
有了这么方便的接口描述文档和接口测试工具,让前后端分离开发更加方便了,测试也可以不依赖于界面单独测试接口。
.NET webAPI中集成swagger的更多相关文章
- 在WebApi中 集成 Swagger
1. Swagger(俗称:丝袜哥)是什么东西? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同 ...
- 在Abp中集成Swagger UI功能
在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...
- .net WebApi中使用swagger
我在WebApi中使用swagger的时候发现会出现很多问题,搜索很多地方都没找到完全解决问题的方法,后面自己解决了,希望对于遇到同样问题朋友有帮助.我将先一步一步的演示项目中解决swagger遇到问 ...
- .net WebApi中使用swagger生成WepApi集成测试工具
我在WebApi中使用swagger的时候发现会出现很多问题,搜索很多地方都没找到完全解决问题的方法,后面自己解决了,希望对于遇到同样问题朋友有帮助.我将先一步一步的演示项目中解决swagger遇到问 ...
- 【swagger学习】.net WebApi中使用swagger
我在WebApi中使用swagger的时候发现会出现很多问题,搜索很多地方都没找到完全解决问题的方法,后面自己解决了,希望对于遇到同样问题朋友有帮助.我将先一步一步的演示项目中解决swagger遇到问 ...
- webapi中使用swagger
net WebApi中使用swagger 我在WebApi中使用swagger的时候发现会出现很多问题,搜索很多地方都没找到完全解决问题的方法,后面自己解决了,希望对于遇到同样问题朋友有帮助.我将先一 ...
- ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...
- C# WebAPI中使用Swagger
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远. 前端和后端的唯一联系变成了API接口:API文档变成了前 ...
- 在webapi中使用swagger
1 在webapi项目下安装swagger,包名 Swashbuckle.AspNetCore 2 在webapi的startup.cs文件中添加swagger服务 /// <summary&g ...
随机推荐
- springboot 集成Redis单机
1.redis服务搭建 centos7 搭建redis服务 2.接入相关 pom文件依赖引入 <dependencies> <dependency> <groupId&g ...
- Patorjk
http://www.patorjk.com/software/taag/#p=display&f=Henry%203D&t=CFR%20SpringBoot%20
- IDEA 学习笔记之 1.5已经过时问题
1.5已经过时问题: apache-maven-3.5.0\conf\settings.xml添加: <profile> <id>jdk-1.8</id> < ...
- 软件开发工具(第7章:Eclipse入门)
一.Eclipse简介 Eclipse [iˈklips],是一个开放源代 码的.基于Java的可扩展集成应 用程序开发环境. Eclipse最初主要用来进行Java语 言开发,但并非只有这个用途. ...
- 小程序webview调用微信扫一扫的“曲折”思路
自上一篇遇到webview中没有返回按钮之后,虽然跳出坑了.解决方案:<小程序webview跳转页面后没有返回按钮完美解决方案> 但是,小程序踩坑之路并没有结束.在公众号网页中通过配置AP ...
- 常见的javascript跨站
第一类: <img src=javascript:alert() /> <iframe src=javascript:alert()></iframe> <s ...
- 安装VMworkstation和Centos虚拟机
1.安装VMware workstation. 2.下一步. 3.可以选择安装位置,下面选项不选. 4.这两个选项不需要选. 5.下一步 6.安装 7. 8.点击许可证输入密钥,密钥在网上搜,然后就完 ...
- 简单了解工作空间工厂(IWorkspaceFactory)
工作空间工厂(WorkspaceFactory)是工作空间的发布者,允许客户连接通过一组连接属性定义的工作空间. 工作空间表达了一个包含一个或多个数据集的数据库或数据源,数据集可以是表.特征类.关系类 ...
- Halcon一日一练:图像分割之阈值分割1
先了解什么是阈值,度娘告诉我的是:一个领域或一个系统的界限称为阈,其数值称为阈值.在图像中,我们把图像看成一个由像素灰度值组成的数集,那么阈,就是这个图像中,根据目标与背景灰度值的差异,选取的一个合适 ...
- Thief-Book 上班摸鱼神器
Thief-Book 上班摸鱼神器 介绍 Thief-Book 是一款真正的摸鱼神器,可以更加隐秘性大胆的看小说. 隐蔽性 自定义透明背景,随意调整大小,完美融入各种软件界面 快捷性 三个快捷键,实现 ...