为了方面APP开发人员,服务端的接口都应当提供详尽的API说明。但每次有修改,既要维护代码,又要维护文档,一旦开发进度紧张,很容易导致代码与文档不一致。

Web API有一个Help Page插件,可以很方便的根据代码及注释自动生成相关API说明页面。

Help Page安装步骤及扩展(以VS2015为例):

右键点击WebAPI项目的引用,选择"管理NuGet程序包"

在搜索框中输入 helppage进行搜索,结果如下图:

然后在右侧边栏点击安装按钮即可进行插件安装了。

安装完成后,你会发现项目下多了不少文件:

接下来,我们对Areas/HelpPage/App_Start/HelpPageConfig.cs进行改造。

改造前,我们需要先了解下HelpPageConfig.cs,其中的Register方法是用于注册Help Page页面需要展示的API的文档的。默认情况下,该方法只支持单个文档导入,所以我们需要扩展下。

我们创建一个可多文件注册的类:

using System;

using System.Linq;
using System.Reflection;

using System.Web.Http.Controllers;

using System.Web.Http.Description;

using WebApplication2.Areas.HelpPage.ModelDescriptions;

namespace WebApplication2.Areas.HelpPage.App_Start

{

public class MultiXmlDocumentationProvider : IDocumentationProvider, IModelDocumentationProvider

{

private readonly XmlDocumentationProvider[] Providers;

public MultiXmlDocumentationProvider(params string[] paths)

{

this.Providers = paths.Select(p => new XmlDocumentationProvider(p)).ToArray();

}

public string GetDocumentation(MemberInfo subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

public string GetDocumentation(Type subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

public string GetDocumentation(HttpControllerDescriptor subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

public string GetDocumentation(HttpActionDescriptor subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

public string GetDocumentation(HttpParameterDescriptor subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

public string GetResponseDocumentation(HttpActionDescriptor subject)

{

return this.GetFirstMatch(p => p.GetDocumentation(subject));

}

private string GetFirstMatch(Func<XmlDocumentationProvider, string> expr)

{

return this.Providers

.Select(expr)

.FirstOrDefault(p => !String.IsNullOrWhiteSpace(p));

}

}

}

然后重写HelpPageConfig.cs文件中的代码如下:

using System.Diagnostics.CodeAnalysis;

using System.Web;
using System.Web.Http;

using WebApplication2.Areas.HelpPage.App_Start;

namespace WebApplication2.Areas.HelpPage

{

public static class HelpPageConfig

{

[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters",

MessageId = "WebApplication2.Areas.HelpPage.TextSample.#ctor(System.String)",

Justification = "End users may choose to merge this string with existing localized resources.")]

[SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly",

MessageId = "bsonspec",

Justification = "Part of a URI.")]

public static void Register(HttpConfiguration config)

{

config.SetDocumentationProvider(new MultiXmlDocumentationProvider(

HttpContext.Current.Server.MapPath("~/bin/WebApplication2.XML")));

}

}

}

这里要注意下WebApplication2.XML,这个文件是需要我们对相关项目属性进行设置下的,让其生成相关xml文件。

然后我们来创建一个Controller用于测试。

using System.Web.Http;

namespace WebApplication2.Controllers
{
/// <summary>
/// 测试响应对象
/// </summary>
public struct TestResponse {
/// <summary>
/// 姓名
/// </summary>
public string Name;
/// <summary>
/// 年龄
/// </summary>
public int Age;
}
/// <summary>
/// 测试
/// </summary>
public class TestController : ApiController
{
/// <summary>
/// 测试接口
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("api/300/1000")]
public TestResponse JustTest()
{
return new TestResponse() { Name = "测试员", Age = 26 };
}
}
}

因为创建的是Web API项目,所以这里还要修改下Global.asax,注册Area。

using System.Web.Http;

using System.Web.Mvc;
namespace WebApplication2

{

public class WebApiApplication : System.Web.HttpApplication

{

protected void Application_Start()

{

AreaRegistration.RegisterAllAreas();

GlobalConfiguration.Configure(WebApiConfig.Register);

}

}

}

接下来,编译运行调试起来,效果如下图。

转载于:https://www.cnblogs.com/yelanggu/p/10177501.html

Asp.net Web Api开发Help Page配置和扩展相关推荐

  1. Asp.net Web Api开发 性能:使用Jil提升Json序列化性能

    from:http://blog.csdn.net/sqqyq/article/details/51692342 看了几篇网上关于各种序列化工具的性能对比,在这里再粘贴下: 我们使用了ASP.NET ...

  2. Asp.net Web Api开发(第二篇)性能:使用Jil提升Json序列化性能

    看了几篇网上关于各种序列化工具的性能对比,在这里再粘贴下: 我们使用了ASP.NET WEB API来提供RESTfull风格的接口给APP调用,默认序列化库用的是:Newtonsoft.Json 为 ...

  3. A simple Test Client built on top of ASP.NET Web API Help Page

    Step 1: Install the Test Client package Install the WebApiTestClient package from the NuGet Package ...

  4. 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, ...

  5. 关于操作 ASP.NET Web API的实例

    WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 -- WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...

  6. ASP.NET Web API 使用Swagger生成在线帮助测试文档

    ASP.NET Web API 使用Swagger生成在线帮助测试文档 Swagger-UI简单而一目了然.它能够纯碎的基于html+javascript实现,只要稍微整合一下便能成为方便的API在线 ...

  7. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session chsakell分享了前端使用AngularJS,后端使用ASP.NE ...

  8. ASP.NET Web API 安全筛选器

    原文:https://msdn.microsoft.com/zh-cn/magazine/dn781361.aspx 身份验证和授权是应用程序安全的基础.身份验证通过验证提供的凭据来确定用户身份,而授 ...

  9. ASP.NET Web API 应用教程(一) ——数据流使用

    相信已经有很多文章来介绍ASP.Net Web API 技术,本系列文章主要介绍如何使用数据流,HTTPS,以及可扩展的Web API 方面的技术,系列文章主要有三篇内容. 主要内容如下: I  数据 ...

  10. 【ASP.NET Web API教程】2.3 与实体框架一起使用Web API

    2.3 Using Web API with Entity Framework 2.3 与实体框架一起使用Web API 本小节是ASP.NET Web API第2章的第3小节,原文共分为7个部分,分 ...

最新文章

  1. torch.nn.functional.cross_entropy.ignore_index
  2. 20. matlab 中的gtext 函数
  3. 更好用的3D打印“活体”墨水来了,合成生物的新工具包!
  4. 前端领域的BEM到底是什么
  5. Python小知识点(5)--面向对象部分
  6. Apache 2,4版本 编译与安装 RedHat enterprises 6.2
  7. 【五】MongoDB管理之生产环境说明
  8. Linux下动态链接库so文件覆盖导致coredump
  9. python rpc框架-python使用rpc框架gRPC的方法
  10. 利用 Cosole 来学习、调试JavaScrip
  11. Matlab基本数学应用
  12. ZYNQ ZCU102视频编码开发
  13. from xx is not a valid DFS filename
  14. “谷歌金山词霸”换汤不换药 实验结果令人失望
  15. ecshop二次开发手册,基本结构
  16. 【CC3200AI 实验教程11】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-AI语音系统架构
  17. WORD文档-最后一页空白页无法删除
  18. mysql 锁住一行数据_MySQL-锁
  19. (一)数据分析——企业的贤内助(数据分析的价值)
  20. Java/Sacla 获取间隔内的全部日期

热门文章

  1. 西奥电梯服务器故障维修,干货│西奥电梯故障分析和技术文件
  2. python整合excel表_Python实现合并excel表格的方法分析
  3. 指纹的对比分析系统概述
  4. 超简单的倒计时代码编写
  5. DataSource接口,一个被大多数程序员忽略的接口
  6. 酷q java_组件-酷Q(QQ)-CQ HTTP API(基本失效)
  7. Qt界面无法切换输入法的解决方法
  8. mantis apache mysql_apache+php+mysql搭建mantis
  9. 洛谷P1938 [USACO09NOV]找工就业Job Hunt(spfa) 题解
  10. 几何公差标注示例及解释——直线度