Web API系列(三):添加接口详细说明及测试
1.引言
前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebApiTestClient组件实现WebAPI接口详细说明以及接口测试。
2.前期回顾
Web API系列(一):初识API及手动搭建基本框架
Web API系列(二):灵活多样的路由配置
3.WebApi HelpPage帮助页
通过VS2017创建Web API应用程序(注意不是空的API应用程序),系统会自动添加HelpPage,这里通过修改代码和设置路径,可以实时查看WebAPI的接口说明。
3.1创建Web API应用程序
新建WebAPITest解决方案,并添加WebAPITest.Web(Web API应用程序)和WebAPI.Entities(类库),创建过程可以到系列博客查看,创建完成,解决方案资源管理器如下图所示:
在Entities中添加Student类,并在Controllers中添加StudentController(Web API控制器类(V2.1)),修改相应代码(具体参照Web API系列(二):灵活多样的路由配置),删除原有的ValueController,上述操作完成后如下图所示:
运行程序,点击页面中API菜单(http://localhost:56783/Help),可以看到API接口,如下图所示:
点击上边列表中的接口,可以查看调用说明,如下图所示:
这时发现所有的说明信息都为空(Description),接下来添加描述信息。
3.2HelpPage显示description
Student.cs中的相应字段和StudentController.cs中的接口添加描述信息,如下图所示:
分别勾选WebAPITest.Entities和WebAPITest.Web项目【属性-生成-输出-XML文档文件】,如下图所示:
3.2.1修改Areas/HelpPage/App_Start/HelpPageConfig.cs
修改 public static void Register(HttpConfiguration config):
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin")));
输出目录都设置到Web的bin下,具体截图如下:
3.2.2修改Areas/HelpPage/XmlDocumentationProvider.cs
添加私有变量:
private List<XPathNavigator> _documentNavigators;
修改构造函数 public XmlDocumentationProvider(string documentPath)(其中的files种的XML名字必须和生成的对应):
public XmlDocumentationProvider(string documentPath)
{if (documentPath == null){throw new ArgumentNullException("documentPath");}//XPathDocument xpath = new XPathDocument(documentPath);//_documentNavigator = xpath.CreateNavigator();_documentNavigators = new List<XPathNavigator>();var files = new[] { "WebAPITest.Web.xml", "WebAPITest.Entities.xml" };foreach (var file in files){var path = Path.Combine(documentPath, file);if (File.Exists(path)){XPathDocument xpath = new XPathDocument(path);_documentNavigators.Add(xpath.CreateNavigator());}}
}
添加私有方法:
private XPathNavigator SelectSingleNode(string selectExpression)
{foreach (var navigator in _documentNavigators){var propertyNode = navigator.SelectSingleNode(selectExpression);if (propertyNode != null)return propertyNode;}return null;
}
用SelectSingleNode(selectExpression)替换_documentNavigator.SelectSingleNode(selectExpression)的调用,在文中大概有四处。
此时完成添加描述的全部操作,运行程序,效果如下图所示:
4.WebApiTestClient接口测试
WebAPI在线接口测试,是通过WebApiTestClient组件实现。
4.1WebApiTestClient介绍
WebApiTestClient组件作用主要有以下几个:
将WebApi的接口放到了浏览器里面,以可视化的方式展现出来,比如我们通过http://localhost:11095/Help这个地址就能在浏览器里面看到这个服务里面所有的API接口以及接口的详细说明。
能够详细查看API的类说明、方法说明、参数说明、返回值说明。只需要我们在定义方法时候加上 /// 这种详细注释即可,组件自动读取注释里面的内容展现在界面上面。
可以修改http请求头文件Head和请求体Body里面的参数,指定发送http请求的特性,比如指定我们最常见的contentType指示参数的类型。
组件拥有测试接口的功能,用过Soup UI的朋友应该知道,通过Soup UI能够方便测试WebService参数以及返回值。我们的WebApiTestClient也可以实现类似的功能,直接通过页面上的测试按钮,就能测试接口。
4.2安装 WebApiTestClient组件
通过NuGet引入组件,如下图所示:
安装成功后,项目会自动添加一些主要文件:
Scripts\WebApiTestClient.js
Areas\HelpPage\TestClient.css
Areas\HelpPage\Views\Help\DisplayTemplates\TestClientDialogs.cshtml
Areas\HelpPage\Views\Help\DisplayTemplates\TestClientReferences.cshtml
4.3组件使用
修改Areas/HelpPage/Views/Help/Api.cshtml,添加以下内容:
@Html.DisplayForModel("TestClientDialogs")
@section Scripts{<link href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />@Html.DisplayForModel("TestClientReferences")
}
添加位置如下图所示:
添加完成后,运行程序,调用api/Student/{id},此时发现在页面右下角出现一个【Test API】按钮,如下图所示:
单击【Test API】按钮,可以直接测试次API接口,具体调用后边再讲,此时发现测试页面在当前页面的最下端,不太美观,如下图所示:
研究发现,出现该问题的原因是由于新建的项目自带的JQuery和Boostrap的版本过高引起,通过NuGet将JQuery修改为1.12.4,Boostrap修改为3.3.7。在此运行程序,测试页面出现页面中间,如下所示:
输出调用参数001,点击【Send】按钮,测试api/Student/{id},调用结果如下图所示:
其他接口都可以通过此方法调用测试,非常的直观、便捷。
5.总结
至此,完成了关于WebAPI接口详细说明及测试添加的全部过程,上述操作的环境VS2017和.Net Framework4.6,在实际操作中遇到问题可留言。博文写作不易希望多多支持,后续会更新更多内容,感兴趣的朋友可以加关注,欢迎留言交流!
扫描添加下方的微信公众号,获取更多福利和干货!也可通公众号(码探长)联系探长,期待与你相遇!!!
Web API系列(三):添加接口详细说明及测试相关推荐
- Web API系列(三)统一异常处理
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...
- WEB API 系列(二) Filter的使用以及执行顺序
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don't Repeat Yourself)思想 ...
- Web API系列之三 基本功能实现
Web API系列之二讲解了如何搭建一个WebApi的基架,本文主要在其基础之上实现基本的功能.下面开始逐步操作: 一.配置WebApi的路由-用于配置外部如何访问内部资源的url的规则 1.添加Gl ...
- 什么是Web API?Web API:网络应用程序接口
什么是Web API Web API是网络应用程序接口.包含了广泛的功能,网络应用通过API接口,可以实现存储服务.消息服务.计算服务等能力,利用这些能力可以进行开发出强大功能的web应用. Web ...
- Hadoop系列 (三):HDFS详细介绍
文章目录 Hadoop系列文章 HDFS简介 HDFS基本概念 分布式文件系统特点 HDFS设计目标 HDFS架构 HDFS应用场景 HDFS三大组件 NameNode SecondaryNameNo ...
- 用ASP.NET Web API技术开发HTTP接口(一)
<转载自 "浮点指向"> 启动Visual Studio 2015,新建一个ASP.NET Web应用程序,命名为SimpleAPI.选择Empty模板,并勾选&quo ...
- [转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
本文转自:http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然 ...
- WEB API系列(一):WEB API的适用场景、第一个实例
在我前一篇博客<WebAPI前置知识:HTTP与RestfulAPI>中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下, ...
- 【Web API系列教程】3.3 — 实战:处理数据(建立数据库)
前言 在本部分中,你将在EF上使用Code First Migration来用测试数据建立数据库. 在Tools目录下选择Library Package Manager,然后选择Package Man ...
最新文章
- 朴素贝叶斯预测是否为垃圾短信
- oc中代理的简单运用
- android引入开源库_为好目录引入开源:通过代码帮助公益组织
- 计算机流水线作业员做什么,电子厂普通作业员的工作流程是什么
- linux系统清理内存,如何清除linux的内存缓存,缓冲和交换空间
- Mac电脑下的单片机开发环境配置心得
- 51超声波测距简易代码
- java的六大框架_常用的java开发框架介绍 (初学者必备的六大框架)
- Luogu 3206 [HNOI2010]城市建设
- 免费的DDoS防火墙有哪些
- Hexo博客中插入图片,在网页中无法显示:采用图床外链的方法
- 使用node读取文件内容并且替换文件中的内容
- [反汇编练习] 160个CrackMe之021
- 行链接(Row Chaining)和行迁移(Row Migration)
- 陕西延安一男子看钓鱼忘拉手刹,爱车溜进鱼塘:自己都惊呆了
- display常用属性值
- 20、JAVA进阶——集合(1)
- 微型计算机的软 硬件组成,微型计算机的软、硬件组成及主要性能指标
- 找准EMS,企业争做“碳”路者
- TortoiseSvn强制解锁 break lock
热门文章
- 编译原理三大经典:龙书 虎书 鲸书
- python冒泡排序例子
- npm install安装失败 error D:\xxx\xxx\node_modules\node-sass: Command failed. Exit code: 1
- 软件测试 | 测试开发 | Zadig 完成 100% 开源:开启软件交付 3.0 时代
- 【红蓝对抗】边界突破-思维导图
- python安装lzo_mac-pip3 install python-lzo 失败
- 别了,Firebug!
- 2022-2028年中国国家大学科技园行业市场运营格局及投资趋势预测报告
- 工程师文化:正版软件应该公司买吗
- 合同评审取消并无控制