最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,要看的文档一大堆,自己要调用的接口找不着,或都找着了不知道怎么去调用,记得包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,也是硬着头皮去看各种文档,熟悉代码,在网上不断地去查找资料。所以决定写一序列文章把之前做的API接口相关的工作做个总结,二来写一个通用SDK把之前涉及到的代码封装成类库,以便以后可以更好地使用。就不用再重创轮子了,三来对一些有需要的朋友,比如刚接触API接口调用的朋友来说,希望可以给他们提供一些帮助,一起交流,共同成长,一起进步。

今天这篇文章主要是谈一下自己的需求构想,SDK产品相对来说还是涉及到的东西不多,同时也希望园内的朋友提出自己宝贵的意见,如果感兴趣的朋友也可以参与起来。还是那句话,共同学习,共同成长。作为一个超过10年工作经验的老鸟来说,或多或少还是可以给一个刚毕业或工作时间不长的开发人员提供一些帮助的。这个就是看你们有没有兴趣了,还有是不是想学一些相关的东西。

首先代码开源,放在github或类似的代码托管库上,使用git作为源代码管理器。便于与代码托管库交互。开源环境下使用git也是最好的。下篇将代码托管地址贴出来。

下面再聊聊为什么要做通用SDK呢,因为之前一直在做API接口相关的工作,各大平台的API接口调用规则各不相同,而且现在的产品一般也不光与一家公司做接口API对接,所以通用SDK很有必要。

通用API接口SDK前期先把框架搭建起来。做成包含封装、扩展以及多态的软件项目。同时容易上手与使用,最主要的还是要容易上手与使用。对于刚接触的人来说尤其重要,他们希望很快搞定接口调用相关的工作,比如说微信公众平台获取用户信息,他们不希望找很久才知道怎么使用。

之前看过像淘宝开放平台,微信公众平台、百度,饿了么等各大平台的SDK,对于SDK涉及到的模块大致有一个了解。首先是为了封装参数,安全签名,获取响应,少数SDK还有消息服务。

涉及到的代码模块主要有日志、对象的格式转换Json与XML。请求参数与响应参数的封装,接口调用,还包括像错误码,异常处理,签名等安全方面的请求,API接口地址与名称。

最后还有就是使用C#作为开发语言。看了很多平台都没有提供.NET语言的SDK,说明.NET使用的人确实变少了,但是我一直使用的就是.NET C#语言,其他的语言很少使用。所以望各位见谅。开发环境是使用VS2013还是15要再想想。

SDK设计思想主要还是模仿HTTP协议请求,Restual API接口也是基于HTTP协议的方法直接对资源进行操作,服务器对客户端请求作出响应,请求包含了安全验证防篡改相关的请求参数,一般包括AppKey,AppSecret,以及根据请求参数算出来的签名Signature,还有防重发的时间戳。

主要需要设计的核心接口与类包含请求接口,它是具体请求类的所有基类,封装请求API名称与请求参数。响应接口主要封装响应的状态码与状态描述,主要是装请求返回响应让调用者很好的知晓请求状态,便于定位问题所在,提高调试效率。还有一个主要进行封装的类包括客户端调用,它的主要作用是封装客户端调用。它接收请求参数,对请求作出响应,响应结果可以使用Json与XML两种形式返回。

另外公共方法包括像签名,验证,还有MD5与SHA1加解密、JSON序列化与反序列化,XML序列化与反序列化等。

这次先写这么多,主要是前期的构思,希望各位园友提出宝贵的意见,以后如果有需要帮助的话,我也会尽力帮助回馈你们。还是那句话,一起学习,一起进步。

各开放平台API接口通用SDK序列文章 前言的更多相关文章

  1. 各开放平台API接口通用 SDK 前言

    最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,所有写一序列文章把之前的工 ...

  2. 开放平台API接口安全策略汇总

    在设计开放平台接口过程中,往往会涉及接口传输安全性相关的问题,本文对接口加密及签名的相关知识做了一个总结,在方便自己查阅的同时也分享给大家做一些参考. 接口安全性问题思考 接口安全性问题主要来源于几方 ...

  3. Java对接拼多多开放平台API(加密上云等全流程)

    前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...

  4. Java生鲜电商平台-API接口设计之token、timestamp、sign 具体架构与实现(APP/小程序,传输安全)

    Java生鲜电商平台-API接口设计之token.timestamp.sign 具体设计与实现 说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃 ...

  5. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  6. 开放平台(接口)开发-1-天气API接口大全

     前几天有个公司让准备一下第二次面试.应聘的是IOS开发实习生,可是之前一直做android,IOS刚接触了一个月,会的不是非常多,所以决定做一个实际的项目展现给面试官,余同学给了个建议:能够做一 ...

  7. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序

    我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变为现实. 自然语言对话即你的APP或者你制作的工具.机器人等能够对用户输入 ...

  8. 微信小程序,天气预报(百度地图开放平台API)

    小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...

  9. 互联网开放平台API安全设计

    互联网开放平台设计1.需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性.2.常用解决办法:2.1 使用加签名方式,防止篡改数据2.2 使用Ht ...

随机推荐

  1. Ehcache 的简单实用 及配置

    Ehcache 与 spring 整合后的用法,下面是一个Ehcache.xml配置文件: 通用的缓存策略 可以用一个 cache: <?xml version="1.0" ...

  2. Linux中安装redis

    第一部分:安装redis 1.希望将安装包下载到此目录 /home/local/src 安装过程指令 $ mkdir /home/local/redis   $ cd /home/local/src  ...

  3. MySQL自增长的bug?

    实验环境: mysql> status--------------mysql Ver 14.14 Distrib 5.7.14, for Linux (x86_64) using EditLin ...

  4. hdu4597 Play Game 区间DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 全国邀请赛通化赛区第8题--题目重现 思路: 区间DP的思想,想法是队友想出来的,感觉很秒,自己 ...

  5. Linux上rpm方式安装JDK1.7

    说明: 1.Linux版本 CentOS6.5_x86 2.Java版本 JDK1.7 32位的rpm包,所以是以rpm方式安装的java 3.可以使用yum install java从yum源中安装 ...

  6. dubbo 入门

    1 介绍 1.1 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 1.2 说明 DUBB ...

  7. Java学习笔记——封装、继承和多态

    先说说封装: 用new 一条狗来举个例子: public class Dog { //私有化字段 private String name; private int age; //无参构造 Dog(){ ...

  8. App架构经验总结(转载)

    原文地址:http://www.iteye.com/news/31472 架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构也会不同.然而,有些东西还是通用 ...

  9. angular.js封装的树形指令

    html ul.tree-show sub-transclude-set ng-transclude li.parent(ng-repeat='(key,item) in treeData',ng-i ...

  10. int类型和byte类型的强制类型转换

    今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到In ...