ABP框架使用 Swagger

在最近的一个项目中用到了 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 Swashbuckle

 Install-Package Microsoft.AspNet.Cors

 Install-Package Microsoft.AspNet.WebApi.Cors

重新引入命名空间,可以看到问题没有了,重新编译运行项目,在网站URI根路径后键入 swagger/ui/index ,访问之,大功告成!

可以看到所有的API【注意只有继承了IApplictionService接口的Interface中定义的方法才会被扫描并显示在这里】的名称、参数、都在这里面了,还可以直接验证好不好用哦~

posted @ 2018-04-13 11:34  手扶拖拉机撕鸡  阅读(611)  评论(0编辑  收藏  举报