什么是Web API?

Web API是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。

分类

一、请求--响应API。

请求--响应类的API的典型做法是,通过基于HTTP的Web服务器暴露一个/套接口。API定义一些端点,客户端发送数据的请求到这些端点,Web服务器处理这些请求,然后返回响应。响应的格式通常是JSON或XML。

在这种类型的Web API里,比较流行的是这三种:RESTRPCGraphQL

1.1 REST

REST全称是Representational State Transfer 表述性状态传递。REST可能是现在最流行的一种Web API。

REST的核心就是资源,一个资源就是可以被标识的实体,它有名称和地址。

REST API就是把数据以资源的形式暴露出来,并使用标准的HTTP方法来代表创建、读取、更新和删除资源等事务。

1.2 RPC

Remote Procedure Call。RPC是一种比较简单的API,客户端直接会执行另一个服务器上的代码。

REST是关于资源的,而RPC就是关于动作的。

在RPC里,客户端通常是把方法名和参数传递给服务器,然后服务器返回JSON或XML。

1.3 GraphQL

GraphQL 是 API的查询语言。最近越来越火。它由Facebook于2012年开始开发,2015年被开源了。

二、事件驱动式 Web API

针对用请求-响应式API,如果服务的数据经常变化,那么响应就可能无法保持新鲜了。开发者如果想与变化的数据保持同步,就只能对API进行polling操作了。

但是如果poll的频率较低,客户端仍有可能无法获得从上次poll到现在所有的数据事件。如果poll的频率较高,还特别浪费资源。

所以我们需要实时的分享事件的数据,通常使用下面三种机制:WebHookWebSocketHTTP Streaming

2.1 WebHooks

WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不同,使用WebHook,你可以实时接受到变化。

2.2 WebSocket

WebSocket这个协议,它通过一个TCP协议建立一个双向全双工的流式通信。WebSocket通常用在客户端和服务器之间的通信,也可以用在服务器之间的通信。

2.3 HTTP Streaming

使用请求-响应式API,客户端发送一个请求,服务器端返回一个响应,这个响应的长度是有限的。

而使用HTTP Streaming,服务器端可以在一个由客户端打开的长生存的连接里持续的推送新数据。

最新文章

  1. 写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
  2. 在布局文件中使用Fragment的步骤
  3. 关于DOM的一些笔记(二)
  4. ABP 初探 之User、Role、Permission数据库设计 (EntityFramework 继承的另一种使用方法)
  5. Decimal、 Float、 Double 使用
  6. [转载]C#多线程学习(一) 多线程的相关概念
  7. bzoj1798 [Ahoi2009]维护序列
  8. [转]SVN使用log,list,cat,diff查看所有及特定文件版本信息
  9. css3新增动画
  10. MUI底部导航切换子页面
  11. Chrome浏览器,处理input自动填充时带黄色背景色
  12. cocos2dx创建win32项目一般步奏
  13. Volley封装
  14. 启动报错:Access denied for user 'root'@'localhost' (using password:YES)
  15. Java快速排序和归并排序详解
  16. 实现nlp文本生成中的beam search解码器
  17. UNIX 网络编程笔记-CH2:TCP、UDP概貌
  18. 查看MySQL变量
  19. node.js 获取客户端信息
  20. c++ wchar_t

热门文章

  1. OpenSessionInViewFilter 的配置及作用(原文地址: http://blog.csdn.net/sunsea08/article/details/4545186)
  2. 1、__del__ 2、item系列 3、__hash__ 4、__eq__
  3. java日期加减年月日
  4. HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)
  5. Codeforces Beta Round #25 (Div. 2 Only)
  6. java调用微信扫一扫
  7. log4j 产生的日志位置设置和catalina.home、catalina.base
  8. golang 创建一个简单的广播echo服务器
  9. JFinal Web开发学习(四)数据库连接与自动生成model
  10. 定时器中的this和函数封装的简单理解;