web api集成 swagger

1:认识Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

 作用:

    1. 接口的文档在线自动生成。

    2. 功能测试。

2.集成Swagger

Swagger支持web api,不支持mvc,集成swagger需要安装Swashbuckle, Swagger.net, 以及Swagger.net.UI. 

3.Swagger的配置

安装完上面的安装包后,在项目的属性=》生成里面,设置xml文档

web api集成 swagger

然后在Swagger.net 里面配置文档的位置,他会自动读取xml,然后显示,代码如下:

            var config = GlobalConfiguration.Configuration;

            config.Filters.Add(new SwaggerActionFilter());
            
            try
            {
                config.Services.Replace(typeof(IDocumentationProvider),
                    new XmlCommentDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/Swagger.XML")));
            }
            catch (FileNotFoundException)
            {
                throw new Exception("Please enable \"XML documentation file\" in project properties with default (bin\\WebApplication2.XML) value or edit value in App_Start\\SwaggerNet.cs");
            }

设置完成后,还需要注释一段代码:

web api集成 swagger

然后运行程序,效果如下:

web api集成 swagger

你可以把homecontroller 里面配置直接跳转到swagger页面,这样运行完程序之后,就直接跳到swagger这个页面了,就不用手动输入地址。

4.Swagger的注释配置

web api集成 swagger

这个是示例返回的model,需要在controller加上下面的属性:

       [SwaggerResponse(HttpStatusCode.OK, Description = "返回", Type = typeof(UserInfo2))]

UserInfo2就是返回的示例Model, 使用的过程中也发现一些问题,就是这个model一定要定义在当前controller里面,注释才有效,如果是在其他地方,就没有注释,很奇怪。

web api集成 swagger

就是这个样子。

5.其他高级配置

中文汉化,还有请求权限控制等等,自己探索吧