看完这篇文章,你就入门了所有有关API的热门概念!

看完这篇文章,你就入门了所有有关API的热门概念!_第1张图片

你听说过应用程序接口吗?或者说,你听过API吗?

相信各位或多或少还是听过这个词的,这几年过API这个概念在IT界特别的火,每个人都在讨论要如何去使用API或者是自己搭建API.

但你又是否清楚什么是REST API呢?什么是OpenAPI,它和Swagger有什么区别?而GraphQL又是否是一种API呢?

在这篇文章中,我就会帮大家梳理所有和API有关的时髦词汇,以及他们之间的关系。

在今天的这部分文章当中,我会重点讲解和API相关的技术和概念。而在下期文章当中,我则会给大家介绍一些和API有关的常用工具,包括开发和管理API时所需要的工具等等。


什么是API? 最直白的解释

如果你还不知道API是什么,你可以把它想像成你楼下麦当劳的自助点餐机。

你需要遵循一定步骤去操作它把你的订单发送给后厨,这个过程就类似于一个程序去调用另一个程序的API服务。调用API的程序需要遵守那个API所规定的数据格式和规范,这样API才能接收到准确的数据。

看完这篇文章,你就入门了所有有关API的热门概念!_第2张图片

用一句话来概括的话就是: API定义了两个程序之间应该如何沟通。
API在我们的生活中其实非常常见,Web API算是我们平时接触最多的API类型。他们一般部署在我们应用程序的后端。

举个栗子,只要你现在给这篇文章点个赞,你的知乎客户端就会从手机端发送一个请求给后端服务器相对应的API来更新这个文章的赞的数量。

近几年,Web API的开发趋势逐渐由之前基于SOAP的API转变为REST风格的 API.


什么是REST?它又和SOAP有什么区别呢?

REST全称是REpresentational State Transfer. 中文名是表述性状态转移。别看它听起来好像很高深莫测的样子,但其实你不用真的去深究他的字面意思。你只需要记住,REST是搭建API的一种架构风格。

REST有六大设计规范和要求,比方说你的API必须是stateless(无状态化的),以及cacheable(可缓存的)。

看完这篇文章,你就入门了所有有关API的热门概念!_第3张图片

如果一个Web API满足所有这些规范,那么它就可以被叫做REST API, 或者是RESTful API.

SOAP又是什么?它是不是另一种API的设计风格呢?

其实并不算是。SOAP的英文全称是Simple Object Access Protocol,中文直译过来叫做简单对象存取协议。协议的概念指的是在系统之间传播信息的系统标准。

看完这篇文章,你就入门了所有有关API的热门概念!_第4张图片
数据格式方面,SOAP只使用XML一种格式,而REST则通常使用JSON。

看完这篇文章,你就入门了所有有关API的热门概念!_第5张图片

和XML相比,json在格式上更加简洁并且更加容易上手。
由于开发REST API的人越来越多,人们希望可以制定一个规范的格式来开发和记录他们的API. 因此,OpenAPI, RAML和API Blueprint这些标准规范孕育而生。

OpenAPI规范原本叫做Swagger规范,它是一个由Linux基金会发起的项目,受到包括Google,IBM等公司的支持;

RAML则是由Mulesoft这间公司开发的的另一种规范,这间公司的业务还是挺有趣的,我们会在下期文章中提到;

API Blueprint则是由Apiary开发的另一种规范,这间公司后来被Oracle收购。

看完这篇文章,你就入门了所有有关API的热门概念!_第6张图片

大概3,4年前,Mulesoft和Apiary这两家公司也相继加入了OpenAPI的生态系统,使得openapi成为了如今REST API最通用的标准。
在搞清楚这些词的意思之后,你可能会好奇:为什么IT圈这么喜欢创造这些新词和新的标准?

别急!让我来介绍这篇文章的最后一个流行的词汇:

GraphQL

在很多人的印象中GraphQL貌似是一种新的数据库。但其实叫它应该算作是一种新的API类型。它为API提供另外一种查询语言,以及服务器端用于执行查询命令的运行环境。GraphQL是由Facebook开发,以解决REST API长久以来的一个短板。

想象一下,这是一个社交媒体应用的RESTful后台服务。

看完这篇文章,你就入门了所有有关API的热门概念!_第7张图片
如果现在我们的前端想要获取一个用户的贴文和粉丝数据,它必须去调用3个endpoints才能实现它的目的。

首先,它需要调用用户ID的endpoint去获取用户的初始数据。

看完这篇文章,你就入门了所有有关API的热门概念!_第8张图片
然后它还需要分别调用贴文和粉丝对应的API。


这个过程看上去就以及十分繁琐了,更别提当我们有越来越多API的需求时,整个程序会变得多复杂。

这个时候GraphQL为我们提供了另一种思路。它通过一种新的查询格式和执行查询的运行环境来简化这个过程。

看完这篇文章,你就入门了所有有关API的热门概念!_第9张图片
如图所示,在运用了这种查询语言之后,你的前端只需要指明它需要的所有数据,然后只需要调用一次就可以实现同样的目的。

GraphQL拥有丰富的library,支持所有流行的编程语言。

到这里,我相信你对于API的这些重要概念,以及它们彼此的关系有了一个大致的了解。

你可能感兴趣的:(电商API知识分享,数据库,网络爬虫,大数据,开发语言,物联网)