seegongsik
我的单词本
网络

应用之间对话的窗口,API

天气应用怎么知道天气? 它不是自己看天。它去问别的有天气数据的地方。可它不像人那样读网页,应用之间只按固定格式交换干净的数据。那个约定好的窗口就是 API。

01

给人看的画面,给应用用的窗口

前面我们学过,发出请求,
就会回来一个响应。
人收到的响应通常是网页。
有文字,有图,有按钮。
人眼看着舒服,
可应用拿来用就太乱了。
所以应用之间不传画面,
而是交换能立刻用的数据。
那个约定好的窗口就叫 API。

点一边来比较

点一下给人看的画面和给应用用的窗口比一比。哪个应用更好用?

同样的信息,样子可以不同。
给人的是打扮得好看的画面,
给应用的是没有多余东西的数据。
画面是给人读的,
窗口是给应用读的。
那么应用是怎么
跟那个窗口说话的呢?
下一步看看怎么发请求。

02

按固定格式发请求

对窗口不能随便乱说。
要按事先定好的格式来问。
比如 “告诉我首尔的天气” 这样
约定好的请求。
就像在餐厅看着菜单,
用定好的名字点菜。
点单是约定好的说法,
厨房就不会糊涂,马上做。
API 也只听得懂约定好的请求。

我的应用
天气 API
点一个约定好的请求发给窗口

点一个约定好的请求发给 API。因为是固定格式,窗口立刻就懂。

请求发出去了,
接下来该回答了。
不是给人发画面,
API 用什么来回答呢?
为了让应用能立刻用,
它用整理得干干净净的数据回答。
那份数据长什么样,
下一步展开来看。

03

它用数据回答,不是图

API 的回答不是图。
是名字和值配成对的数据。
比如温度是 23,
天空是晴,就这样。
有名字,所以每个值是什么很清楚。
这种用名字配值来写的方式,
常叫做 JSON。
应用从这份数据里只挑出需要的值,
用到自己的画面上。

点一下展开数据。不是图,是干净的名字和值(温度 23、晴)。

每个值都带名字,
所以应用不会糊涂。
要温度就取温度,
要天气就取天气。
图得一个个去辨认,
数据却能立刻用。
而这样的窗口不止一个。
天气窗口、地图窗口,有好多个。
那把两个以上合起来会怎样?

04

组合窗口,做出新服务

每个窗口只做一件事。
地图窗口告诉你位置,
天气窗口告诉你天气。
可把两个合起来会怎样?
就出现一个新服务,
在地图上显示那地方的天气。
像拼积木一样,
把好几个窗口凑起来做出更大的东西。
我们用的应用就是这么做出来的。

+
把两个窗口都打开来组合

依次点地图 API 和天气 API 把它们合起来。合在一起就成了在地图上显示天气的新服务。

两个窗口的数据一相遇,
就出现了单靠一个做不到的事。
地图和天气都不用从头做,
只是借来已有的窗口合在一起。
所以新服务能很快做出来。
不必重新削轮子,
拿做好的零件来用就行。
这就是 API 改变世界的方式。

05

来理一理

归成一句话,是这样。
人看画面,可应用之间交换的是数据。
那个约定窗口就是 API。
按固定格式发请求,
它回的是名字和值的数据,不是图。
组合好几个窗口,就出现新服务。
所以我们不必把一切从头做,
可以借来已有的窗口做出新东西。

依次点这一讲教的东西来收尾

依次点要点回顾一下。(给应用的窗口 → 按固定格式请求 → 用数据回答 → 组合成新服务)

现在你知道应用们
怎么互相交换数据了。
你看得见的一个应用背后,
有许多窗口在悄悄干活。
下次打开天气应用时,
想一想吧。
那个画面是从哪个窗口
取来什么数据的呢,
这样。

一句话总结人用眼睛看网页(HTML),可应用之间交换的是数据,不是画面。把数据按固定格式交换的那个约定窗口,就是 API。发一个约定好的请求(比如 “首尔天气?”),它回的不是图,而是干净的数据(像温度 23、晴 这样的名字和值)。所以别的应用能立刻用上这份数据。而且把几个 API 组合起来,就成了新服务。在地图 API 上叠一个天气 API,地图上就显示天气。我们用的很多应用其实就是从好几个窗口取数据、再合起来展示给我们。
网络
如果有帮助,请支持我们