apisdk-starter自动装配组件简介

涉及的技术

看了本系列的博客,你可以学到

  1. spring boot自动装配
  2. spring扫描BeanDefinition
  3. FactoryBean实战
  4. spring aop源码拓展
  5. javassist字节码实战
  6. jvm运行时字节码的表现

接下来我会围绕调用开放接口“apisdk组件”和“apisdk-starter组件”为中心,从实战出发,运用这些技术。

名词解释

开放接口:开放接口指的是允许第三方开发者使用你的应用程序或服务的接口。这些接口通常基于标准的HTTP或TCP/IP协议,并遵循一些数据格式和调用规范,使得第三方开发者可以通过编程的方式构建对你的服务的访问和调用。

apisdk:apisdk是一种辅助编程的工具,也可以称之为API客户端组件。在开放接口中,开发者需要使用API服务端提供的接口,进行数据的请求和返回。为了降低开发者使用API接口的难度和复杂度,API提供者通常会提供一套API SDK工具包,可以降低API开发人员的工作量,帮助开发者快速、便捷地访问API服务。同时,API SDK工具包也可以提高应用程序的可靠性、性能和安全性。

apisdk-starter:apisdk-starter是专门针对apisdk提供的启动器,它是基于spring boot的starter组件开发的,包含一些默认的依赖项和配置,可以帮助开发者更快地初始化和配置apisdk的环境,从而快速地开始项目开发工作,而不用考虑繁琐的 API 访问逻辑的实现。

apisdk组件的背景

公司依托丰富的行业积累,提供了数以万计的开放接口,帮助开发者快速构建行业解决方案。为了降低开发者使用API接口的难度和复杂度,我们提供了apisdk客户端组件,定义了一套声明OpenAPI的注解和注解解析器,封装了签名算法,开发者只需要查询域名、密钥对、获取token就可以得到请求上下文,发起接口请求。
但是我司的组件在接口声明时必须加上SdkContext参数,必须学会获取密钥、token签名这些服务的调用,而且代码是kotlin,难以维护。因此我做了apisdk的包装,隐藏SdkContext参数声明、隐藏调用服务的操作,开发者更快的调用OpenAPI。

apisdk组件的组成

注解

apisdk提供了一套自定义注解, 用于定义API 的请求路径、请求方法类型、参数和响应等信息。通过使用注解,开发者可以快速定义和映射 API 的路由和处理方法。包含的注解:
@RequestMapping:方法注解,标注开放接口的请求URL路径和请求方法
@Path:参数注解,标注参数是路径参数
@Param:参数注解,标注参数是查询字符串
@Body:参数注解,标注参数是JSON格式

请求上下文

请求上下文包含了密钥对、请求token、签名、host等信息,封装为SdkContext,开发者发起请求前必须要构造SdkContext请求上下文。

参数解析器

参数解析器是为了把开发者使用注解定义的参数转成对应请求的数据,如@Param标注的参数,要使用“?”拼接到请求URL中。

签名计算

经过参数解析器后,需要计算请求的签名,保证请求的合法性、数据完整性和安全性。

Http请求执行器

Http请求执行器是封装了okhttp,执行http restful接口调用。

数据响应处理器

用于处理接口返回的数据。

apisdk组件配套服务

在发起接口请求前,开发者必须要构造SdkContext请求上下文,包括域名服务查询、密钥对查询、token获取等服务。为了方便,这些服务通过简单Mock数据提供服务。如:RegionMock、SecretMock、TokenMock。

apisdk组件的应用

有了上面的一些介绍,我们来简单的应用下,定义一个开放接口,再调用它。

开放接口声明

在这里插入图片描述
接口声明必须要有SdkContext固定参数,接口调用前,必须手动调用基础服务构造SdkContext上下文,这样才能正确的发起调用。

接口调用

在这里插入图片描述
上面是模拟调用的过程,包括接口实例化、SdkContext封装、接口调用,实际的调用过程比这个复杂的多。

apisdk的不足

  1. apisdk没有整合spring,完全是编程式的
  2. 必须要学会构建SdkContext请求上下文
  3. 没有失败重试的机制

还有一个真实情况:apisdk是java和kotlin的结合体,难以维护,只能通过巧妙的适配来达到目的。
因此apisdk-starter就孕育而生,解决这两个问题。

源码参考

在这里插入图片描述
工程结构如上图,其中

  • access-boot-apisdk:模拟apisdk,包括OpenAPI声明注解、注解解析器,实例化OpenAPI的工具,封装了签名算法等
  • access-boot-autoconfigure:apisdk-starter自动装配核心代码
  • access-boot-dependencies:依赖管理
  • access-boot-starter-sample:业务开发Demo
  • access-boot-starters:启动器依赖

分享内容来自此工程,大家请参考 码云

总结

本篇介绍了apisdk的背景、组成、应用与不足,接下来会围绕apisdk的不足,介绍apisdk-starter如何实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值