使用.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方法下。其實從官網生成的代碼中,這段代碼已經存在了,只是後面兩個參數使用的默認參數,沒有給出自定義的部分,而這就是我們需要手動添加的了。網上其實這塊的內容也能搜到,但是大多說的不比官網多多少,關鍵也沒有詳細說明放在什麼地方。所以對於初次接觸的人來說,還是比較鬱悶的,需要花時間摸索。

這裏給幾張截圖,以幫助初次接觸的朋友快速定位。

在這個類中添加即可。代碼部分如下:

這樣生成的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章