.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 ...
随机推荐
- thymeleaf 将后端绑定数据直接传递js变量
根据自我需求,thymeleaf可以直接将后端数据传递给js中进行使用,例如: 1.后端接口数据: @Controllerpublic class TestController { @RequestM ...
- JS/Jquery 表单方式提交总结
1. submit提交 (1). submit 按钮式提交 缺点:在提交前不可修改提交的form表单数据 // 1. html <form method="post" act ...
- 死磕 java线程系列之线程模型
问题 (1)线程类型有哪些? (2)线程模型有哪些? (3)各语言使用的是哪种线程模型? 简介 在Java中,我们平时所说的并发编程.多线程.共享资源等概念都是与线程相关的,这里所说的线程实际上应该叫 ...
- 前端防止url输入地址直接访问页面
首先,解决这个问题要搞明白此url是从程序内部跳转还是直接在地址栏输入的,如果是程序内部跳转,那就好办啦.方法如下: 判断用户是否登录状态,是否携带token 使用router.beforeEach注 ...
- java基础之泛型对象与json互转
1. 场景描述 把泛型对象转成字符串放到缓存中,获取后使用有点问题,记录下,有碰到的朋友,参考下. 2. 解决方案 2.1 操作类及说明 /** * @auther: 软件老王 */ public s ...
- MySQL 数据库删除表中重复数据
采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据.完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法. N.B. 删除数据表的重复数据时,请先备份 ...
- Java面试----01.JavaSE
1.面向对象和面向过程的区别 面向过程:面向过程性能比面向对象高. 因为类调用时需要实例化,比较消耗资源,所以当性能是最重要的考虑因素时,比如单片机.嵌入式开发.Linux/Unix等一般采用面向对象 ...
- 人生,还没困难到"非死不可"
最近半个月,美国著名的Facebook公司,出了好几件大事.第一件事,2019年9月19日,一名陈姓中国软件工程师在Facebook加州总部跳楼自杀.第二件事,2019年10月4日,一名软件工程师在座 ...
- 如何选择一款适合自己操作系统、Windows、Mac还是Linux?
如何选择一款适合自己操作系统.Windows.Mac还是Linux? 作者:我们都很努力着 简介:电脑已经逐渐离不开我们生活,但是如何选择一个我们最佳,最适合的电脑操作系统就成了一些困难选择人士的一个 ...
- vue常见问题随笔集
1.vuex操作对应关系 设置 触发/获取 action <-> dispatch mutations <-> commit getters <-> ...