目錄
背景
最近開始準備用.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<IApplicationService>(typeof(AbpProjectTemplateApplicationModule).Assembly, "v1")
.Build();
這段代碼就是針對.net framwork的項目動態生成api的實現方式,這種方式是大多數中文教程文檔中可以看到的。首先需要導入abp.web.api的包並引用,另外要說明的是這段代碼是放在模塊類的Initialize方法中的,和core的不同。具體可參考鏈接:https://www.jianshu.com/p/dca3bdbd9e14。