如果你搜到了这篇文章,说明你的项目你可能正在做一个开放平台,而且初具规模,需要给第三方提供SDK。
对外开放平台,一般可以只提供一个http接口+安全校验方式,如生成签名,或者OAuth2,当然如果能提供一个SDK给用户,那再好不过了。
比如阿里、腾讯云服务的api接口,都有SDK。他们的比较复杂,有时间可以继续学习学习,继续完善我写的这个。
这里是一个纯java,不依赖第三方重量级组件(其实依赖了一个json工具) 的简洁版的实现。当然如果你给别人提供SDK,也不能有过重的依赖,比如你引入一个Retrofit等类似声明式的http调用组件。
当然它还不完善,比如分页数据解析等等case还没写,有时间了还会继续完善它,我写这个文章主要是说这是一种思路,简单实现的思路。
下面是一个使用的demo:
/**
* 商品api
*/
public interface GoodsApi {
@Api(value="goods.Goods.queryWithSpec", paged=false)
GoodsSearchResponse search(GoodsSearchRequest goodsSearchRequest);
}
/**
* 模拟客户端调用
*/
public class TestClient {
public static void main(String[] args) {
/**********模拟客户端使用***********/
String appId = "1001";
String appSecret = "xxxxx";
String apiDomain = "http://localhost:8080";
//初始化SDK客户端
Client client = new DefaultClient(appId,appSecret,apiDomain);
GoodsApi proxy = ApiFactory.getApi(client, GoodsApi.class);
GoodsSearchRequest request = new GoodsSearchRequest();
request.setGoodsNo("698123762");
request.setGoodsName("黑人牙膏");
GoodsSearchResponse response = proxy.search(request);
}
}
如你所看见的,goodsapi只是声明了一个interface接口,加上注解,实现思路非常简单又传统,用AOP拦截自定义注解上的接口名字,产生代理类,发起http调用。
源码在这里,如果对你有帮助,点个小星星支持一下吧:
https://gitee.com/haoyangli/open-sdk