ABP-VNEXT 学习笔记(五)动态API客户端
2022/8/25 23:23:09
本文主要是介绍ABP-VNEXT 学习笔记(五)动态API客户端,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本篇内容需要结合上一篇 https://www.cnblogs.com/fei686868/p/16625289.html
官方地址:https://docs.abp.io/zh-Hans/abp/latest/API/Dynamic-CSharp-API-Clients
在上一篇中,我们讲到了自动生成api
本篇内容,讲述如何动态生成API客户端,简单的说,就是通过http请求获取数据。但此处,我们是依赖接口层实现,并非自己一个个写http请求。
该功能适用于 微服务场景下。
我们再web2项目中,只引入接口层 AbpAPI.ApplicationContract。 这个是跟上一篇中web1需要引入 实现层不一样的。
需要引入:Volo.Abp.Http.Client 这个包
using AbpAPI; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Autofac; using Volo.Abp.Http.Client; using Volo.Abp.Modularity; namespace AbpAPIWeb2 { [DependsOn(typeof(AbpAPIApplicationContractModule))] //注意,此处引入的是接口层 [DependsOn(typeof(AbpAspNetCoreMvcModule))] [DependsOn(typeof(AbpAutofacModule))] [DependsOn(typeof(AbpHttpClientModule))] //添加依赖 public class AbpAPIWeb2Module : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { base.ConfigureServices(context); //创建动态客户端代理,就这么一句户搞定 context.Services.AddHttpClientProxies( typeof(AbpAPIApplicationContractModule).Assembly ); } public override void OnApplicationInitialization(ApplicationInitializationContext context) { var app = context.GetApplicationBuilder(); base.OnApplicationInitialization(context); } } }
就上面代码中一句户搞定:
//创建动态客户端代理,就这么一句户搞定 context.Services.AddHttpClientProxies( typeof(AbpAPIApplicationContractModule).Assembly );
多个接口层,就写多个
应用上,跟我们日常调用接口方法,没啥区别,中间的http请求过程,abp都处理了
如:
public IStudentService studentService { get; set; } public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { return View(); } public async Task<string> GetName() { string name = await studentService.GetNameAsync(); return name; }
这样就实现了api的调用。
这里面有个注意点需要特别说明一下,经过测试发现:
方法必须是异步的,如果同步的方法,则此处方法调取后,返回的都是null,至于为什么,需要去研究abp源码了。
为什么需要引入接口层,而不是直接写http请求呢,其实大多数微服务框架也是这么操作的。
引入共同的接口层
1:为了约束,做好契约。使代码更规范更容易维护。
2:简洁。在使用时直接调用对方方法,无需配置一大堆的url
这篇关于ABP-VNEXT 学习笔记(五)动态API客户端的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?