使用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 即可调用: