一、前言:
API作为应用程序编程接口,(API:Application Program Interface),可以使用不同的编程语言进行API的开发
API 与图形用户接口(GUI)或命令接口有着鲜明的差别:API 接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。
二、按照接口表现形式,分类
序号 | 接口 | 基于或支持的协议 | 描述 |
---|---|---|---|
1 | HTTP 接口 | HTTP协议 | 使用广泛、轻量级、跨平台、跨语言的,但凡是第三方提供的API都会有HTTP版本的接口。 |
2 | RPC 接口 | HTTP、TCP、UDP、自定协议 | RPC技术是指远程过程调用,它本质上是一种Client/Server模式,可以像调用本地方法一样去调用远程服务器上的方法,支持多种数据传输方式(Json、XML、Binary、Protobuf等) |
3 | Web Service 接口 | 基于http协议的soap协议的封装和补充 | Web Service其实是一种概念,我们可以将以WEB形式提供的服务称为Web Service,所以像RESTful、XML-RPC、SOAP等都可以当成是Web Service的一种实现方式。 |
4 | RESTful | HTTP协议 | 它不是一种规范,而是一种设计准则,用不同的HTTP动词(GET、POST、DELETE、PUT等)来表达不同的请求。 |
5 | WebSocket | udp、tcp | 是一个底层的,双向通信协议 ,适合于客户端和服务器端之间信息实时交互 |
6 | FTP | TCP/IP 协议组中的协议之一 | 文件传输协议,FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 其中FTP服务器用来存储文件 |
二、其他区别:
(1)把socket和http、webservices等等放在一起对比不是很合适,所谓http等的都是对socket进行了一次包装而已,socket更加底层。
(2)不过Web Service接口和HTTP接口存在一些细小区别就是,Web Service接口支持更复杂的对象,而HTTP接口更多的就是传输字符串或者JSON文本。
三、四种类型:
接口 | 类型 | 描述 |
---|---|---|
RPC | 远程过程调用 | 通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信 |
SQL | 标准查询语言 | 是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享 |
FTP | 文件传输 | 文件传输通过发送格式化文件,实现应用程序间数据共享 |
信息交付 | 信息交付 | 指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享 |
四、按照接口访问形式,分类:
分类 | |
---|---|
使用用户令牌,通过Web API接口进行数据访问 | 这种方式,可以有效识别用户的身份,为用户接口返回用户相关的数据,如包括用户信息维护、密码修改、或者用户联系人等与用户身份相关的数据。 |
使用安全签名进行数据提交 | 这种方式提交的数据,URL连接的签名参数是经过安全一定规则的加密的,服务器收到数据后也经过同样规则的安全加密,确认数据没有被中途篡改后,再进行数据修改处理。因此我们可以为不同接入方式,如Web/APP/Winfrom等不同接入方式指定不同的加密秘钥,但是秘钥是双方约定的,并不在网络连接上传输,连接传输的一般是这个接入的AppID,服务器通过这个AppID来进行签名参数的加密对比,这种方式,类似微信后台的回调处理机制,它们就是经过这样的处理。 |
提供公开的接口调用,不需要传入用户令牌、或者对参数进行加密签名 | 这种接口一般较少,只是提供一些很常规的数据显示而已。 |