什么是Web API?web
Web API是网络应用程序接口。包含了普遍的功能,网络应用经过API接口,能够实现存储服务、消息服务、计算服务等能力,利用这些能力能够进行开发出强大功能的web应用。服务器
分类网络
请求--响应类的API的典型作法是,经过基于HTTP的Web服务器暴露一个/套接口。API定义一些端点,客户端发送数据的请求到这些端点,Web服务器处理这些请求,而后返回响应。响应的格式一般是JSON或XML。spa
在这种类型的Web API里,比较流行的是这三种:REST,RPC和GraphQL。接口
REST全称是Representational State Transfer 表述性状态传递。REST多是如今最流行的一种Web API。事件
REST的核心就是资源,一个资源就是能够被标识的实体,它有名称和地址。事务
REST API就是把数据以资源的形式暴露出来,并使用标准的HTTP方法来表明建立、读取、更新和删除资源等事务。资源
Remote Procedure Call。RPC是一种比较简单的API,客户端直接会执行另外一个服务器上的代码。开发
REST是关于资源的,而RPC就是关于动做的。同步
在RPC里,客户端一般是把方法名和参数传递给服务器,而后服务器返回JSON或XML。
GraphQL 是 API的查询语言。最近愈来愈火。它由Facebook于2012年开始开发,2015年被开源了。
针对用请求-响应式API,若是服务的数据常常变化,那么响应就可能没法保持新鲜了。开发者若是想与变化的数据保持同步,就只能对API进行polling操做了。
可是若是poll的频率较低,客户端仍有可能没法得到从上次poll到如今全部的数据事件。若是poll的频率较高,还特别浪费资源。
因此咱们须要实时的分享事件的数据,一般使用下面三种机制:WebHook,WebSocket,HTTP Streaming。
WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不一样,使用WebHook,你能够实时接受到变化。
WebSocket这个协议,它经过一个TCP协议创建一个双向全双工的流式通讯。WebSocket一般用在客户端和服务器之间的通讯,也能够用在服务器之间的通讯。
使用请求-响应式API,客户端发送一个请求,服务器端返回一个响应,这个响应的长度是有限的。
而使用HTTP Streaming,服务器端能够在一个由客户端打开的长生存的链接里持续的推送新数据。