使用.net core和abp框架实现动态webapi的简单说明

目录

背景

代码

其他


背景

最近开始准备用.net core 3.1做一个项目,最终选择了abp框架作为后台webapi实现,从而实现一个以vue作为前端的SPA项目。而作为api对外输出,最好是能进行版本的控制,尤其是在对外暴露的url中直观的显示。

代码

闲话不多说,先上代码表诚意。

Configuration.Modules.AbpAspNetCore()
                 .CreateControllersForAppServices(
                     typeof(DemoApplicationModule).GetAssembly(), moduleName: "v1", useConventionalHttpVerbs: true
                 );

这段代码就是针对.net core的项目动态生成api的实现方式,可以从以下链接中查看详细内容:

https://aspnetboilerplate.com/Pages/Documents/AspNet-Core#application-services-as-controllers (官方的英文文档)。

这部分的代码放在xxx.web.core的项目下,在对应的模板类的PreInitialize方法下。其实从官网生成的代码中,这段代码已经存在了,只是后面两个参数使用的默认参数,没有给出自定义的部分,而这就是我们需要手动添加的了。网上其实这块的内容也能搜到,但是大多说的不比官网多多少,关键也没有详细说明放在什么地方。所以对于初次接触的人来说,还是比较郁闷的,需要花时间摸索。

这里给几张截图,以帮助初次接触的朋友快速定位。

使用.net core和abp框架实现动态webapi的简单说明_第1张图片

在这个类中添加即可。代码部分如下:

使用.net core和abp框架实现动态webapi的简单说明_第2张图片

这样生成的api地址为:/api/services/v1/Role/Create

如果没有修改,即使用默认参数,则api地址为:/api/services/app/Role/Create

其他

在简单说说网上比较容易搜到内容,大多介绍的都是用以下方式实现

Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
                .ForAll(typeof(AbpProjectTemplateApplicationModule).Assembly, "v1")
                .Build();

这段代码就是针对.net framwork的项目动态生成api的实现方式,这种方式是大多数中文教程文档中可以看到的。首先需要导入abp.web.api的包并引用,另外要说明的是这段代码是放在模块类的Initialize方法中的,和core的不同。具体可参考链接:https://www.jianshu.com/p/dca3bdbd9e14。

你可能感兴趣的:(ASP.NET,CORE,架构及框架)