一,背景
目前项目提供的交互方式一般是http方式。当业务方需要对接的时候,一般是要接口文档的方式去对接业务接口。
对接接口存着很大的沟通成本特别是在接口需要一些权限校验的场景比如:签名验签,token验证等,这一块都需要有约定好的各种规则。这些规则往往存着人为的一些干扰,导致对接难度大。
二,sdk优缺点
以sdk方式提供优点:
1,屏蔽接口的各种权限校验规则。
2,接入方能更快速的接入。
3,有效减少沟通成本。
缺点:
1,需要维护好sdk的版本
2, 为了满足不同开发语言的需求,需要开发不同sdk的版本来支持,需要耗费人力。
三,手写http-sdk
对于这种发http请求的sdk在于sdk需要提供接口的入参,出参和提供统一的发送http请求工具。
这里我们以java语言为例手写一个sdk
第一步 编写sdk项目
1)新建java工程,然后引进http请求的工具类,这里我们用hutool提供的工具类来做实验
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.15</version>
</dependency>
2)项目工程包结构如下
3)编写UserClient
userclient里面可以封装各种签名和header头,调用方只要传调用方必须的参数就可以
4)打包,并发布到私服
生成依赖如下
<dependency>
<groupId>httpsdk</groupId>
<artifactId>httpsdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
第二步 测验sdk项目使用
在另外一个项目中引入第一步的sdk依赖,然后在main方法中编写测试代码
public static void main(String[] args) {
String host = "http://127.0.0.1:8081";
UserClient userClient = new UserClient("appid",host);
UserRequest userRequest = new UserRequest();
userRequest.setUid("uid");
UserRepond userRepond = userClient.gerUserListByIds(userRequest);
System.out.println(JSONUtil.toJsonStr(userRepond));
}
第三步 实验结果
引入的sdk版本能正常访问接口并响应。