一、使用動態api的目的
ABP可以自動創建C# API 客戶端代理來調用遠程HTTP服務(REST APIS).通過這種方式,你不需要通過 HttpClient
或者其他低級的HTTP功能調用遠程服務並獲取數據.
現在有兩個服務:BackgroundJob服務要調用IdentityManagement服務,並在調用時傳遞token
二、集成步驟
1、創建可調用的動態api
在Bridge.IdentityManagement.Application模塊中有類UserService
有方法GetInfo()
在IdentityServiceHostModule配置中增加配置
Configure<AbpAspNetCoreMvcOptions>(options => { options.ConventionalControllers.Create(typeof(IdentityManagementApplicationModule).Assembly, option => { option.TypePredicate = type => { return true; }; }); });
2、BackgroundJobApplicationModule客戶端調用
在調用之前要進行配置
第一步:在BackgroundJobHttpApiClientModule注入程序集IdentityManagementApplicationContractsModule
第二步:在Bridge.BackgroundJobService.Host中配置調用的遠程ip
第三步:在BackgroundJobHttpApiModule中依賴BackgroundJobHttpApiClientModule模塊
最後在BackgroundJobApplicationModule模塊HttpClientTest類中調用
三、傳遞token
現在服務和服務之前可以像類中方法中一樣調用了,但是在GetInfo方法中獲取不到token,現在需要將在訪問Test方法時獲取到的token進行傳遞
查看是不是獲取到了token只需要看看當前用戶也是就是變量CurrentUser有值。
1、BackgroundJob服務中解析token並獲取當前用戶的值
第一步:修改BackgroundJob配置文件,確定當前api的名稱
第二步:在auth服務中增加scope
項目之前在請求token時寫死了Scope現在注掉
到此,訪問BackgroundJob服務的api應該可以拿到當前用戶數據了。
但是,如果你通過動態api,從BackgroundJob服務去訪問其它服務還是拿不到token
此時我們需要在BackgroundJobServiceHostModule服務中依賴兩個模塊:
Volo.Abp.Http.Client.IdentityModel.dll
Volo.Abp.Http.Client.IdentityModel.Web.dll