各开放平台API接口通用SDK序列文章 前言
最近两年一直在做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序列文章 前言的更多相关文章
- 各开放平台API接口通用 SDK 前言
最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,所有写一序列文章把之前的工 ...
- 开放平台API接口安全策略汇总
在设计开放平台接口过程中,往往会涉及接口传输安全性相关的问题,本文对接口加密及签名的相关知识做了一个总结,在方便自己查阅的同时也分享给大家做一些参考. 接口安全性问题思考 接口安全性问题主要来源于几方 ...
- Java对接拼多多开放平台API(加密上云等全流程)
前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...
- Java生鲜电商平台-API接口设计之token、timestamp、sign 具体架构与实现(APP/小程序,传输安全)
Java生鲜电商平台-API接口设计之token.timestamp.sign 具体设计与实现 说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃 ...
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- 开放平台(接口)开发-1-天气API接口大全
前几天有个公司让准备一下第二次面试.应聘的是IOS开发实习生,可是之前一直做android,IOS刚接触了一个月,会的不是非常多,所以决定做一个实际的项目展现给面试官,余同学给了个建议:能够做一 ...
- 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序
我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变为现实. 自然语言对话即你的APP或者你制作的工具.机器人等能够对用户输入 ...
- 微信小程序,天气预报(百度地图开放平台API)
小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...
- 互联网开放平台API安全设计
互联网开放平台设计1.需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性.2.常用解决办法:2.1 使用加签名方式,防止篡改数据2.2 使用Ht ...
随机推荐
- [瞎玩儿系列] 使用SQL实现Logistic回归
本来想发在知乎专栏的,但是文章死活提交不了,我也是醉了,于是乎我就干脆提交到CNBLOGS了. 前言 前段时间我们介绍了Logistic的数学原理和C语言实现,而我呢?其实还是习惯使用Matlab进行 ...
- path sum i
Problem Statement: Path sum i Given a binary tree and a sum, determine if the tree has a root-to-le ...
- Spring3.0配置多个事务管理器(即操作多个数据源)的方法
大多数项目只需要一个事务管理器.然而,有些项目为了提高效率.或者有多个完全不同又不相干的数据源,最好用多个事务管理器.机智的Spring的Transactional管理已经考虑到了这一点,首先分别定义 ...
- OpenStack修复影响宿主机的QEMU漏洞CVE-2017-2615
距离这个虚拟化层面的漏洞公告发出已有两个多月了,漏洞详情可以查看: 360安全应急响应中心-360发现QEMU严重漏洞 影响国内大部分公有云 简单来说是通过Cirrus VGA操作读取宿主机内存中的内 ...
- C++ 中的一些错觉
1. 默认构造函数和不带参数的构造函数之间无联系 默认构造函数是编译器发现类不存在显式构造函数时自动生成的无参数的构造函数.同样,用户可以定义显示的无参数构造函数. 2. 在构造函数.析构函数中调用v ...
- JAVA自增自减的玄机
先看下面代码: ; i = i++; System.out.println(i); 请问:输出结果为多少? ---------------------------------------------- ...
- EF Core 2.0 新特性
前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2 ...
- Docker下搭建Jenkins构建环境
首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...
- 重新绑定ItemsSource先设置ItemsSource = null;的原因
即报错信息为:在使用 ItemsSource 之前,项集合必须为空. 原因:Items和ItemSource,只能有一个生效,想用其中一个,另一个必须是空. 重新绑定ItemSource,虽然 ...
- Git Flow Note
近期困惑于Git代码版本控制,集中两天时间研究,其中基础知识来源于<Git权威指南>,分支思想则来源于一篇博文<A successful Git branching model> ...