前言

  你需要为客户编写Api调用手册?你需要测试你的Api接口?你需要和前端进行接口对接?那么这篇文章应该可以帮到你。本文将介绍创建Web Api 帮助文档页面的两种方式,Microsoft Help Page和Swashbuckle Help Page。

编写RESTful的Web Api

    /// <summary>
/// 股票数据接口
/// </summary>
[RoutePrefix("api/stocks")]
public class StocksController : ApiController
{
private readonly List<Stock> _stocks; /// <summary>
/// 构造函数
/// </summary>
public StocksController()
{
_stocks = new List<Stock>
{
new Stock{Symbol = "", Name = "平安银行", Exchange = "深证交易所"},
new Stock{Symbol = "", Name = "万科A", Exchange = "深证交易所"},
new Stock{Symbol = "", Name = "PT金田A", Exchange = "深证交易所"},
new Stock{Symbol = "", Name = "国农科技", Exchange = "深证交易所"},
new Stock{Symbol = "", Name = "世纪星源", Exchange = "深证交易所"}
};
} /// <summary>
/// 获取股票列表
/// </summary>
/// <returns>股票列表</returns>
[HttpGet]
public IEnumerable<Stock> List()
{
return _stocks;
} /// <summary>
/// 获取指定股票
/// </summary>
/// <param name="symbol">股票代码</param>
/// <returns>指定股票</returns>
[HttpGet(), Route("{symbol}", Name = "Get")]
public IHttpActionResult Get(string symbol)
{
var stock = _stocks.SingleOrDefault(n => n.Symbol == symbol);
if (stock == null)
{
return NotFound();
} return Ok(stock);
} /// <summary>
/// 添加一支股票
/// </summary>
/// <param name="stock">股票信息</param>
[HttpPost]
public IHttpActionResult Create(Stock stock)
{
return CreatedAtRoute("Get", new { symbol = stock.Symbol }, stock);
} /// <summary>
/// 更新一支股票
/// </summary>
/// <param name="stock">股票信息</param>
[HttpPut]
public IHttpActionResult Update(Stock stock)
{
if (_stocks.All(n => n.Symbol != stock.Symbol))
{
return NotFound();
} return StatusCode(HttpStatusCode.NoContent);
} /// <summary>
/// 部分更新一支股票
/// </summary>
/// <param name="symbol">股票代码</param>
/// <param name="form">需要更新的股票信息</param>
[HttpPatch, Route("{symbol}")]
public IHttpActionResult PartialUpdate(string symbol, PartialForm form)
{
if (_stocks.All(n => n.Symbol != symbol))
{
return NotFound();
} return StatusCode(HttpStatusCode.NoContent);
} /// <summary>
/// 删除一支股票
/// </summary>
/// <param name="symbol">股票代码</param>
/// <returns>是否删除成功</returns>
[HttpDelete, Route("{symbol}")]
public IHttpActionResult Delete(string symbol)
{
if (_stocks.All(n => n.Symbol != symbol))
{
return NotFound();
} return Ok(true);
} /// <summary>
/// 这个方法不会显示到帮助页面
/// </summary>
[HttpGet, Route("hide")]
[ApiExplorerSettings(IgnoreApi = true)]
public void NotShow()
{ }
}

Microsoft Help Page

1.在Nuget添加Help Page组件。

  

  组件添加完后,会自动生成帮助页面,文件存在区域(Areas)中

  

2.注册区域(Areas)

  在Global.asax文件中的Application_Start()方法添加以下代码:

  AreaRegistration.RegisterAllAreas();

  

  浏览生成的帮助页面:http://localhost:xxxx/help

  

  Web API的方法列表已经显示出来了,但是方法的描述还是默认的描述。

3. 修改配置文件生成位置
  右键项目属性,指定输出xml。

  

  修改Areas\HelpPage\App_Start\HelpPageConfig.cs中register方法里指定的xml路径为上述指定输出的路径。

  

  

  再查看帮助页面,方法描述已经和代码注释一致。

  

  注:这里可根据需要把Area中对应页面的英文词条更新成中文,当然样式也可以调整。

4.添加测试工具

  在Nuget添加Test Client组件。

  

  在Areas\HelpPage\Views\Help\Api.cshtml添加以下代码:

  @Html.DisplayForModel("TestClientDialogs")

  @section Scripts {

  <link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />

  @Html.DisplayForModel("TestClientReferences")

  }

  

  再次运行Help Page,每个API说明页面的右下角会多一个测试的按钮。

4.参考

  http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/creating-api-help-pages

Swashbuckle Help Page

1.在Nuget添加Swashbuckle组件。

  然后就可以浏览生成的帮助页面:http://localhost:xxxx/swagger

  

  Web API的方法列表已经显示出来了,但是方法的描述还没有显示出来。

2. 修改配置文件生成位置
  右键项目属性,指定输出xml。

  

  找到SwaggerConfig.cs

  

  把 c.IncludeXmlComments(GetXmlCommentsPath())的注释去掉

  

  实现GetXmlCommentsPath()方法,指定xml路径为上述指定输出的路径。

  

  再查看帮助页面,方法描述已经和代码注释一致。

  

2. 常见异常

  用Nuget引用dll的时候,它会在config中添加依赖项信息,但偶尔会没添加,这时会出现Could not load file or assembly 'XXX' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)异常。

  此时只要在config中添加对应的依赖项就好

  

4.帮助页面词条及样式调整

  如果要修改或编辑Swashbuckle Help Page的样式或词条,需要编辑SwaggerConfig.cs,相对Microsoft Help Page可能要复杂一点(我只改过Microsoft的,没改过Swashbuckle的)。具体如何修改可参考:https://github.com/domaindrivendev/Swashbuckle

简单总结

  Swashbuckle Help Page搭建起来相对会比较简单,但是样式(自带swagger logo)和词条修改会较麻烦一点,因此,比较适合作为内部接口说明几接口调用测试。

  Microsoft Help Page搭建起来相对要麻烦一点点,但是样式和词条修改会方便一点,因此,比较适合作为外部接口调用使用文档。

源码下载

  https://github.com/ErikXu/WebApi.HelpPage

我这么玩Web Api(一):帮助页面或用户手册(Microsoft and Swashbuckle Help Page)的更多相关文章

  1. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  2. asp.net web api 测试帮助页面建立并测试

    asp.net web api 测试帮助页面建立并测试 现在使用WEB API来开发,越来越流行. 在开发过程中的测试调试,可以使用Fiddler等工具来帮助测试外,还有: 在asp.net 中有种方 ...

  3. 【ASP.NET Web API教程】2.4 创建Web API的帮助页面

    原文:[ASP.NET Web API教程]2.4 创建Web API的帮助页面 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. 2.4 ...

  4. 【ASP.NET Web API教程】2.4 创建Web API的帮助页面[转]

    注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. 2.4 Creating a Help Page for a Web API2.4 创建W ...

  5. 为 ASP.NET Web API 创建帮助页面(转载)

    转载地址:http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages 当创建web API 时,经常要创 ...

  6. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)

    在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...

  7. Web Api帮助页面或用户手册

    我这么玩Web Api(一):帮助页面或用户手册(Microsoft and Swashbuckle Help Page)   前言 你需要为客户编写Api调用手册?你需要测试你的Api接口?你需要和 ...

  8. ASP.NET Web API 2 对 CORS 的支持

    CORS概念 跨域资源共享 (CORS) 是一种万维网联合会 (W3C) 规范(通常被认为是 HTML5 的一部分),它可让 JavaScript 克服由浏览器施加的同域策略安全限制. 所谓同域策略, ...

  9. 【ASP.NET Web API教程】2 创建各种Web API

    原文 [ASP.NET Web API教程]2 创建各种Web API Chapter 2: Creating Web APIs第2章 创建各种Web API 本文引自:http://www.asp. ...

随机推荐

  1. Asp.net Boilerplate之AbpSession扩展

    当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...

  2. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  3. HTTP协议系列(1)

    一.为什么学习Http协议       首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...

  4. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  5. ABP文档 - 嵌入的资源文件

    文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的 ...

  6. Hyper-v 安装CentOS 7 (其他虚拟机一样参考)

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html hyper-v安装很多人没弄过,我这里介绍一下.(其他虚拟机参 ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(72)-微信公众平台开发-消息处理

    系列目录 前言 Senparc.Weixin.MP SDK提供了MessageHandler消息处理类 在作者的Wiki中也详细说明了如何定义这个类,下面我们来演示,消息的回复,及效果 了解Messa ...

  8. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  9. 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位

    ASP.NET Core管道由注册的服务器和一系列中间件构成.我们在上一篇中深入剖析了中间件,现在我们来了解一下服务器.服务器是ASP .NET Core管道的第一个节点,它负责完整请求的监听和接收, ...

  10. 编写自己的PHP MVC框架笔记

    1.MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...