使用swagger实现web api在线接口文档
swagger的好处就不多说了,直观而且漂亮,省事又省力,最重要是提供了测试功能,把权限一关,直接可以在线测试下边还是先上个图吧:


1.新建一个web api项目

2.使用nuget添加Swashbuckle包

3.完成
没错,就是这么简单!运行项目,转到地址 http://localhost:57700/swagger/ui/index 会看到如下页面,这是默认添加的两个apicontroller: 
这个时候接口还没有具体的描述信息等,例如我们给ValuesController.Get添加注释描述,在页面上还是没有显示出来。需要按照如下步骤实现:
1. 在app_start 下 SwaggerConfig 大100行的位置找到 //c.IncludeXmlComments(GetXmlCommentsPath()); 如下注释,改为:c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name)); (注意去掉注释了)
2. 在SwaggerConfig添加一个方法代码:
|
1
2
3
4
|
protected static string GetXmlCommentsPath(string name){ return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);} |
3. 修改项目生成,在bin下对应的xml文件可以看到具体的描述文档,如下:

重新生成项目,就要可以看到完整的接口描述了。例如我们心中一个TestController如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/// <summary>/// 测试控制器/// </summary>public class TestController : ApiController{ /// <summary> /// 测试Get方法 /// </summary> /// <remarks>测试Get方法</remarks> /// <returns></returns> [HttpGet] public string Get() { return "Get"; } /// <summary> /// 测试Post方法 /// </summary> /// <param name="name">姓名</param> /// <param name="age">年龄</param> /// <remarks>测试Post方法</remarks> /// <returns></returns> [HttpPost] public string Post(string name, int age) { return name + age.ToString(); }} |
生成的页面如下,可以看到接口的描述,点击Try it out 即可调用:


浙公网安备 33010602011771号