为了深入了解京东开放平台提供的SDK
,我将他们提供的SDK反编译后,重新整理了一份SDK的源码。
获得了源码后,首先我感受到的是这个SDK
实现比较简单,主要功能就是将Java
对象编码为JSON
处理收发消息,难点至于接口比较多,参数也比较多。
因为这个SDK基本上没有什么业务逻辑,所以完全可以使用另外的方式重新开发一套SDK出来。
比如我们可以使用Java JSON Binding
的方式动态绑定,这样我们就不用编写domain
,request
和response
等POJO
的类了,或者使用工具自动生成POJO
类。
为了重写这个SDK,我首先需要获取SDK的所有的接口的详细信息,然后整理为一个统一的JSON
文档,运行时自动的根据这个JSON
文档来编解码消息。
下面是我设计一个简单的API文档格式。
{
"api-suit-name": "jd-open-api-sdk",
"version": "2.0.0",
"provider": "http://help.jd.com/jos/question-594.html",
"api": {
"group": "address",
"name": "AreaCityGetRequest",
"method": "jingdong.area.city.get",
"request": {
"parentId": "Long"
},
"response": {
"cityAreas": [ "AreaListBeanVO[]" ],
"success": "Boolean"
}
}
}
我运用Java的反射机制写了一个简单的JdApiExporter
用于将源码里面所有JdRequest
请求和响应接口都导出为这个JSON文档。