在最近的一个项目中用到了 ABP框架 ,第一次接触到 Swagger 以及前后端的完全分离
在ABP官网下载下来的ABP框架结构【基于ASP.NET MVC5.x的】如图:
ABP的EntityFramework 是Code First Mode的,所以在配置好相应的实体后,修改数据库连接字符串,选择执行Migration 后数据库创建的位置
旧的Migration已经没有用了,全部删除掉,
在程序包管理控制台中,做如下操作:
默认项目一定要选择带有后缀EntityFramework的Add-Migration initAdd-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 Swashbuckle Install-Package Microsoft.AspNet.Cors Install-Package Microsoft.AspNet.WebApi.Cors
重新引入命名空间,可以看到问题没有了,重新编译运行项目,在网站URI根路径后键入 swagger/ui/index ,访问之,大功告成!
可以看到所有的API【注意只有继承了IApplictionService接口的Interface中定义的方法才会被扫描并显示在这里】的名称、参数、都在这里面了,还可以直接验证好不好用哦~