ABP框架学习之正面硬钢(二)

简介: 本文介绍另一种学习ABP框架的方法,该方法为正面硬钢学习法。。。 我们不去官网下载模板,直接引用DLL,直接使用。

Filter配置

在SdudentApiServiceModule模块创建ExceptionFilter类,代码如下:

publicclassExceptionFilter: IExceptionFilter, ITransientDependency
{
publicboolAllowMultiple=> true; 
publicasyncTaskExecuteExceptionFilterAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
awaitTask.Run(()=>
{
if(actionExecutedContext == null)
{
return;
}
if(actionExecutedContext.Exception== null)
{
return;
}
//记录actionExecutedContext.Exception
}); 
} 
}

在SdudentApiServiceModule类的PostInitialize里配置Fliter。

publicoverridevoidPostInitialize()
{
GlobalConfiguration.Configuration.Filters.Add(newExceptionFilter());
}

模块依赖

依照上文,在创建一个TeacherApi模块,然后修改Global的启动模块为TeacherApiServiceModule,然后引入SdudentApi项目。

然后编写TeacherApiServiceModule代码如下:

[DependsOn(typeof(Abp.WebApi.AbpWebApiModule), typeof(SdudentApiServiceModule))]
publicclassTeacherApiServiceModule: AbpModule
{
privatereadonlySdudentApiServiceModule_SdudentApiServiceModule;
publicTeacherApiServiceModule(SdudentApiServiceModule sdudentApiServiceModule)
{
_SdudentApiServiceModule= sdudentApiServiceModule;
}
publicoverridevoidPreInitialize()
{
Configuration.Modules.AbpWeb().AntiForgery.IsEnabled= false;
Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients= true; 
}
publicoverridevoidInitialize()
{ 
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); 
Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
.ForAll<IApplicationService>(Assembly.GetAssembly(typeof(TeacherApiServiceModule)), "Sdudent").Build(); 
}
publicoverridevoidPostInitialize()
{
var ret =_SdudentApiServiceModule.GetSdudent();
Console.WriteLine(ret);
} 
publicoverridevoidShutdown()
{   
}
}

如上代码所示,我们在DependsOn上追加SdudentApiServiceModule依赖,然后在TeacherApiServiceModule的构造函数里,使用SdudentApiServiceModule类型参数,然后运行时参数就会被实例化,并注入进来。

现在我们访问TeacherApi的访问,把TeacherApiServiceModule模块调用起来,看下模块的PostInitialize里,是否成功调用了SdudentApiServiceModule模块的方法,

15.png如上图,依赖调用成功。

Swagger配置

Nuget搜索Swashbuckle.core。

16.png

模块下添加函数

privatevoidConfigureSwaggerUi()
{
Configuration.Modules.AbpWebApi().HttpConfiguration
.EnableSwagger(c =>
{
            c.SingleApiVersion("v1", "文档");
            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
})
.EnableSwaggerUi();
}

然后在Initialize()里调用该函数,配置完成。

然后运行项目,输入swagger/ui/index,如下图:

17.png


代码已经传到Github上了,欢迎大家下载。

github地址:https://github.com/kiba518/ApbWebApi

本文作者:kiba518,全栈.Net软件工程师

声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。

相关文章
|
存储 数据采集 运维
助力工业物联网,工业大数据之业务系统结构【三】
助力工业物联网,工业大数据之业务系统结构【三】
198 0
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
167 2
|
XML Java 数据处理
深入了解 XPath
【8月更文挑战第22天】
331 0
|
Java 程序员 应用服务中间件
spring框架核心技术讲解(上)--超详细教程加案例分析
spring框架核心技术讲解(上)--超详细教程加案例分析
454 0
|
Rust 算法 安全
【算法学习】剑指 Offer II 055. 二叉搜索树迭代器|173. 二叉搜索树迭代器(java / c / c++ / python / go / rust)
实现一个二叉搜索树迭代器类 BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。 boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。 int next() 将指针向右移动,然后返回指针处的数字。 注意,指针初始化为一个不存在于 BST 中的数字,所以对
【算法学习】剑指 Offer II 055. 二叉搜索树迭代器|173. 二叉搜索树迭代器(java / c / c++ / python / go / rust)
|
存储 关系型数据库 MySQL
MySQL-索引优化篇(2)_使用索引扫描来优化排序
MySQL-索引优化篇(2)_使用索引扫描来优化排序
149 0
|
存储 编解码 监控
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.2 直播业务稳定性保障——5.2.2 直播业务监控最佳实践(3)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.2 直播业务稳定性保障——5.2.2 直播业务监控最佳实践(3)
281 0
热饭面试复习【python 基础 】2/4
热饭面试复习【python 基础 】2/4
|
SQL 算法 数据库
我的网站的结构说明
不知道大家有没有看懂这个图。这个是我的网站(不包括后台管理)的结构图。基本上和三层架构有些相似,但是有三个不同的地方:      一、 数据访问层。 1、数据访问层针对项目是通用,而针对数据库却是专用的。
877 0