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文档
然后在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");
}
设置完成后,还需要注释一段代码:
然后运行程序,效果如下:
你可以把homecontroller 里面配置直接跳转到swagger页面,这样运行完程序之后,就直接跳到swagger这个页面了,就不用手动输入地址。
4.Swagger的注释配置
这个是示例返回的model,需要在controller加上下面的属性:
[SwaggerResponse(HttpStatusCode.OK, Description = "返回", Type = typeof(UserInfo2))]
UserInfo2就是返回的示例Model, 使用的过程中也发现一些问题,就是这个model一定要定义在当前controller里面,注释才有效,如果是在其他地方,就没有注释,很奇怪。
就是这个样子。
5.其他高级配置
中文汉化,还有请求权限控制等等,自己探索吧