在最近的一个项目中用到了 ABP框架 http://aspnetboilerplate.com/ ,第一次接触到 Swagger https://swagger.io/ 以及前后端的完全分离
在ABP官网下载下来的ABP框架结构【基于ASP.NET MVC5.x的】如图:
ABP的EntityFramework 是Code First Mode的,所以在配置好相应的实体后,修改数据库连接字符串,选择执行Migration 后数据库创建的位置
<connectionStrings><add name="Default" connectionString="Server=.;Database=ABP_show_api_in_the_swagger; Trusted_Connection=True;" providerName="System.Data.SqlClient" /></connectionStrings>
旧的Migration已经没有用了,全部删除掉,
在程序包管理控制台中,做如下操作:
默认项目一定要选择带有后缀EntityFramework的
Add-Migration init
Add-Migration init
Add-migration 要输入两遍
update-database
在执行成功后相应的数据库就会创建在相应的地方
在WebApi类库中,找到后缀为WebApiMoudle的类,添加ConfigureSwaggerUi方法
private void ConfigureSwaggerUi()
{Configuration.Modules.AbpWebApi().HttpConfiguration.EnableSwagger(c =>{c.SingleApiVersion("v1", "show all Api");c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());}).EnableSwaggerUi();
}
之后在Initialize方法里追加代码
var cors = new EnableCorsAttribute("*", "*", "*");GlobalConfiguration.Configuration.EnableCors(cors);Configuration.Modules.AbpWeb().AntiForgery.IsEnabled = false;ConfigureSwaggerUi();
会发现缺少命名空间
其中EnableCorsAttribute 位于System.Web.Http.Cors命名空间下,EnableSwagger 位于Swashbuckle.Core包中,用Nuget中引入相应的包
都安装到 WebApi类库中
Install-Package SwashbuckleInstall-Package Microsoft.AspNet.CorsInstall-Package Microsoft.AspNet.WebApi.Cors
重新引入命名空间,可以看到问题没有了,重新编译运行项目,在网站URI根路径后键入 swagger/ui/index ,访问之,大功告成!
可以看到所有的API【注意只有继承了IApplictionService接口的Interface中定义的方法才会被扫描并显示在这里】的名称、参数、都在这里面了,还可以直接验证好不好用哦~