以前在做WebAPI调用测试时,一直在使用Fiddler测试工具了,而且这个用起来比较繁琐,需要各种配置,并且不直观,还有一点是还得弄明白URL地址和要传递的参数,然后才能调用。  最近新入职,公司里面也用到了WebAPI调用,但是使用的调用工具让我眼前一亮,他用的是Swagger。这个工具可能有的人没听说过,它仅仅引用一个包即可嵌入到项目中,用的时候直接输入网址就能看到调用界面了。你是不是之前也没用过呢,是的话,那请看下面介绍吧~

1. 安装swagger nuget包

首先,将Swagger安装到WebApi项目中。我们安装到WebApi类库中,包为 Install-Package Swashbuckle.Core,如下:

2. 配置 WebApiModule

我们打开WebApi类库下面的WebApiModule类,因为我们的项目叫MyThirdABP,所以类叫MyThirdABPWebApiModule。

首先,在类里面加入方法:

      public override void PreInitialize()
{
Configuration.Modules.AbpWeb().AntiForgery.IsEnabled = false;
base.PreInitialize();
}  
 private void ConfigureSwaggerUi()
{
Configuration.Modules.AbpWebApi().HttpConfiguration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "SwaggerIntegrationDemo.WebApi");
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
//将application层中的注释添加到SwaggerUI中
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory; var commentsFileName = "bin\\MyThirdABP.Web.XML";
var commentsFile = Path.Combine(baseDirectory, commentsFileName);
//将注释的XML文档添加到SwaggerUI中
c.IncludeXmlComments(commentsFile);
})
.EnableSwaggerUi();
}  

然后,在Initialize方法中,调用ConfigureSwaggerUi的方法。

 public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(MyThirdABPApplicationModule).Assembly, "app")
.Build();
ConfigureSwaggerUi();
}  

代码已经完毕,但是我们要注意的一点,我们看到ConfigureSwaggerUi方法里面,commentsFileName变量是指定路径的。所以我们要在路径下面做一些配置。

选中Web项目,然后右键属性—>生成—>输出—>勾选 XML文档文件,并且把内容复制到commentsFileName变量中。

3. 运行Swagger

首先,我们将web设为启动项目。在路径后面加入 /swagger/ui/index,如下:

到此,启动成功。

》》》

接下来 为WebApi方法添加注释,并生成xml

在xxx.Application项目的接口声明文件中为各接口方法添加注释,如下图:

编辑xxx.Application项目属性,设定在输出时生成XML文档文件 (注意这个不是在web启动项目中右键,而是在要添加注释的项目中右键)

在xxx.WebApi项目中配置Swagger

修改xxxWebApiModule类,添加ConfigureSwaggerUi()方法,并在Initialize()方法的最后调用它。
注意:要添加对Abp.Configuration.Startup、Swashbuckle.Application命名空间的引用。
另外,不调用ResolveConflictingActions()方法来提供冲突解决办法将有可能遇到500错误。

在增加下面的方法前需要 Install-Package Microsoft.AspNet.WebApi.Cors 安装一个包。

using System.Linq;
using Abp.Configuration.Startup;
using Swashbuckle.Application; [DependsOn(typeof(AbpWebApiModule), typeof(OrganizationApplicationModule))]
public class OrganizationWebApiModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(OrganizationApplicationModule).Assembly, "csci")
.Build(); //配置跨域
GlobalConfiguration.Configuration.EnableCors(new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*"));
//配置输出json时不使用骆驼式命名法,按对象属性原名输出
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
//集成Swagger UI
ConfigureSwaggerUi();
} private void ConfigureSwaggerUi()
{
var xmlFile = string.Format("{0}/bin/{1}.Application.xml", System.AppDomain.CurrentDomain.BaseDirectory, this.GetType().Namespace);//如果所注释文件没和此Model类在同一个命名空间下,则可以直接去掉{1},直接写文件名,例如RYJObject.Application.xml
Configuration.Modules.AbpWebApi().HttpConfiguration
.EnableSwagger(c =>
![](http://images2015.cnblogs.com/blog/19184/201706/19184-20170613111141275-1740289580.png) {
c.SingleApiVersion("v1", this.GetType().Namespace);
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
if (System.IO.File.Exists(xmlFile)) { c.IncludeXmlComments(xmlFile); }
})
.EnableSwaggerUi();
} }

测试

运行WEB项目,在浏览器中访问{项目网址}/swagger,即可见到动态生成的WebApi接口,并可以直接调试。

注:如果见不到[Try it out!]按钮,点一下"Expand Operations"链接即可。

【转】C# ABP WebApi与Swagger UI的集成的更多相关文章

  1. C# ABP WebApi与Swagger UI的集成

    本文是配置WebApi与Swagger UI,可以参照 http://www.cnblogs.com/farb/p/ABPSwaggerUIIntegration.html 1. 安装swagger ...

  2. ABP理论学习之Swagger UI集成

    返回总目录 本篇目录 介绍 安装 安装Nuget包 配置 测试 介绍 从官方网站上可以看到:"启用了Swagger API,就可以获得交互式文档,生成和发现客户端SDK". 安装 ...

  3. WebApi使用swagger ui自动生成接口文档

    之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...

  4. Asp.net WebApi 配置 Swagger UI

    首先安装Swashbuckle.Core 然后添加swagger配置文件. [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), &q ...

  5. Abp Vnext Blazor替换UI组件 集成BootstrapBlazor(详细过程)

    Abp Vnext自带的blazor项目使用的是 Blazorise,但是试用后发现不支持多标签.于是想替换为BootstrapBlazor. 过程比较复杂,本人已经把模块写好了只需要替换掉即可. 点 ...

  6. 在Abp中集成Swagger UI功能

    在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...

  7. ASP.NET Zero--基于令牌的认证&SWAGGER UI

    基于令牌的认证 任何应用程序都可以将应用程序中的任何功能认证和使用为API.例如,您可以创建一个移动应用程序消耗相同的API.在本节中,我们将演示来自Postman的API (Google Chrom ...

  8. swagger ui和spring boot集成生成api文档

    作者:小莫链接:https://www.zhihu.com/question/28119576/answer/134580038来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  9. ABP框架 - Swagger UI 集成

    文档目录 本节内容: 简介 Asp.net Core 安装 安装Nuget包 配置 测试 Asp.net 5.x 安装 安装Nuget包 配置 测试 简介 来自它的网页:“...使用一个Swagger ...

随机推荐

  1. DELPHI调试出现disconnected session的解决办法

    我在控制面板中,是禁用了UAC的,如下图 但是,在注册表中启用了UAC(EnableLUA), 工程中请求了管理员权限,如下图: 所以,整个权限请求混乱了. 解决办法,要么把注册表的LUA设置为0,要 ...

  2. 解决启动httpd报: apr_sockaddr_info_get() failed for错误

    我测试库里 service httpd start 时报 下面错误 httpd: apr_sockaddr_info_get() failed for fengxin.wzjzt.centoshttp ...

  3. 杭电 1021 Fibonacci Again

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021 解题思路:根据之前发现斐波那契数列的规律,即为f(n)能被3整除当且仅当n能被4整除. 于是联想 ...

  4. (转)Bootstrap 之 Metronic 模板的学习之路 - (6)自定义和扩展

    https://segmentfault.com/a/1190000006815041 前面我们将 Metronic 的结构和源码大致浏览了一遍,Metronic 整个文件包有三百多兆,在实际项目中, ...

  5. Matrix(坑)

    https://github.com/florent37/Android-3D-Layout

  6. 前端开发—CSS 盒子、浮动、定位

    盒子模型 margin padding border content margin:            用于控制元素与元素之间的距离:body自带 8 像素的margin 需要手动去除.(快递盒之 ...

  7. windows端口被占用解决办法

    1.查找端口 netstat -ano | findstr 端口号 2.进程列表并查找相应的进程 tasklist |findstr 进程号 3.杀死进程 taskkill /f /t /im 进程名 ...

  8. Python数据分析5-----数据规约

    1.数据规约概念和目的 数据规约是产生更小且保留数据完整性的新数据集. 意义:降低无效错误数据的影响.更有效率.降低存储成本. 2.属性规约 (1)属性合并(降维):比如PCA (2)删除不相关属性 ...

  9. Python笔记15------图像

    主要三个库:Pilow(PIL).OpenCV.Skimage(针对scipy,用的少) 小例子:给一张图片的左上角粘贴一个相同的图片(缩略并旋转了45度) from PIL import Image ...

  10. 01.Python基础-4.字符串

    1 字符串初识 字符串编码 字符串定义:多个字符(双引号或单引号中的数据)组成 字符串下标 类似列表list 格式化 就是占位符 最常用%s %d %f等等 转义字符 转义字符 描述 \ (在行尾时) ...