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软件工程师

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

相关文章
|
6月前
|
JSON 监控 中间件
多图详解万星 Restful 框架原理与实现
多图详解万星 Restful 框架原理与实现
|
前端开发
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-前端洋葱圈模型
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-前端洋葱圈模型
90 0
个人若依框架学习大杂烩
个人若依框架学习大杂烩
176 0
|
编解码 前端开发 JavaScript
前端技术-bable 转码器 | 学习笔记
简介:快速学习前端技术-bable 转码器
136 0
|
前端开发
前端学习案例-手把手教你封装一个ant design的审核框组件
前端学习案例-手把手教你封装一个ant design的审核框组件
192 0
|
前端开发 API
ABP框架学习之正面硬钢
本文介绍另一种学习ABP框架的方法,该方法为正面硬钢学习法。。。 我们不去官网下载模板,直接引用DLL,直接使用。
ABP框架学习之正面硬钢
|
测试技术 开发者
|
Web App开发 前端开发 .NET
【ABP框架系列学习】模块系统(4)
原文:【ABP框架系列学习】模块系统(4) 0.引言 ABP提供了构建模块和通过组合模块以创建应用程序的基础设施。一个模块可以依赖于另外一个模块。通常,程序集可以认为是模块。如果创建多个程序集的应用程序,建议为每个程序集创建模块定义。
1622 0
|
前端开发 JavaScript .NET
【ABP框架系列学习】介绍篇(1)
原文:【ABP框架系列学习】介绍篇(1)   0.引言 该系列博文主要在【官方文档】及【tkbSimplest】ABP框架理论研究系列博文的基础上进行总结的,或许大家会质问,别人都已经翻译过了,这不是多此一举吗?原因如下: 1.【tkbSimplest】的相关博文由于撰写得比较早的,在参照官方文档学习的过程中,发现部分知识未能及时同步(当前V4.0.2版本),如【EntityHistory】、【Multi-Lingual Engities】章节未涉及、【Caching】章节没有Entity Caching等内容。
1966 0