目录
背景
代码
其他
背景最近开始准备用.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方法下。其实从官网生成的代码中,这段代码已经存在了,只是后面两个参数使用的默认参数,没有给出自定义的部分,而这就是我们需要手动添加的了。网上其实这块的内容也能搜到,但是大多说的不比官网多多少,关键也没有详细说明放在什么地方。所以对于初次接触的人来说,还是比较郁闷的,需要花时间摸索。
这里给几张截图,以帮助初次接触的朋友快速定位。
在这个类中添加即可。代码部分如下:
这样生成的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。