文章插图
前言什么是 API?
什么是 SDK?
两者之间有何关系?
欢迎来到本次的每周一问系列 。
既然点进来了,相信你或多或少都听说过这两个名词了,因此,在为你解答之前,让我们先从一个例子出发 。假如你想开发一个 OCR 应用(通俗的说就是文字识别应用),他的功能是识别用户上传的一张图片,然后将图片中的文字识别出来返回给用户 。如下图所示:
通常,OCR 应用的后端服务都会部署在云上,那么我们应该如何在移动应用程序与基于云的服务之间进行通信呢?
这就是 API 和 SDK 的用武之地了 。
APIAPI 的特点通信首先我们要明白的是 API 是和通信有关的,是用于应用(服务)与其他应用(服务)对话所定义的协议 。在上述例子中,你可以简单理解为 API 是 OCR 应用和云端服务之间沟通的桥梁 。
那么 API 到底是什么?
API 全称 Application Programming Interface,即「应用程序接口」 。
一般是指一些预先定义的函数,目的是供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,或理解内部工作机制的细节 。
以 JAVA 为例,当你想要实现一个数组排序的功能时,你是会先手写一个排序算法,还是直接使用Arrays.sort()函数?我想你心里是有答案的 。
抽象其次,我们要理解,API 的另一个重要特点——抽象 。
抽象指的又是什么?
还是以这个 OCR 应用为例,当我们在使用云端提供的文字识别能力时(比如百度文字识别),他的背后可能会有成千上万的代码,比如提供识别能力的机器学习的代码、提供 Web 能力的后端代码等等 。
文章插图
但是你作为一个 APP 的开发者,你需要去看这些代码是怎么写的吗?难道不知道背后的源码就不能调用百度提供的文字识别能力了吗?当然不是 。
通常服务商已经给你提供了文档,告诉你如何去调用相应服务,只要你按照他的要求来即可 。
文章插图
因此,在你的 APP 和 OCR 服务之间,API 抽象出所有复杂的逻辑,简化了调用过程,这使得你只需要考虑获取所需的数据即可 。
标准化API 是标准化的,这意味着存在有关如何定义 API 的行业标准,比如 SOAP、REST、GraphQL 等 。
我在《你的第一本 SpringBoot 书》[1]中写到什么是 RESTful API,有兴趣的小伙伴可以点击阅读,这是我正在写的一本 SpringBoot 入门教程,目前还没完工,欢迎读者们不要吝啬自己的建议。API 的构成要素那么,API 通常由什么组成呢?
首先,我们要发送一些数据到云端,即所谓的「请求」 。
从本地应用发请求到云端,我们需要分几步完成,以 REST 为例 。
对于 REST API 调用请求,第一步是指定传输的方法,通常是和 HTTP 方法对应的,如下图所示:
文章插图
当你想要上传一张图片时,通常会使用 POST 方法,然后是传递一些参数,包括请求的内容(图像本身) 。然后加上需要请求的地址,即可构成一个完整的请求 。如下图所示:
文章插图
之后,服务器再以 JSON 等形式将数据返还给你,在你使用的云服务的文档中也会有所标注 。
文章插图
SDK说了这么多,你应该对 API 有所了解了,那么这时候问题就来了,作为开发人员,你如何在实际的项目中调用 API?
你要自己构造 HTTP 请求、拼接 URL、添加需要的参数、处理返回的 JSON 对象,麻烦吗?
麻烦 。
那有没有什么好的办法简化这些操作,使得我只需要给一张图片然后就给我返回结果的呢?
自然是有的,这就是接下来我们要说的 SDK 了 。
SDK 全称 Software Development Kit,软件开发工具包 。
一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合 。
通俗来讲就是第三方服务商提供的实现产品软件某项功能的工具包 。例如 JDK 就是一种 SDK 。
还是以上面的 OCR 应用为例,如果使用了某厂商的 SDK 服务,那么我们连 HTTP 请求的构建都不需要了,仅调用一个方法,可能的代码如下图所示 。
推荐阅读
- 餐厅里的红枣茶的做法,桃花红枣茶的做法与茶效
- 百香果金桔茶作用,金桔茶的功效与作用
- 岭头奇兰的功效与作用,普洱茶的鉴赏与冲泡
- 藏茶黑茶的功效与作用,黑茶黑茶的功效与作用
- 电脑常见问题与故障有哪些
- 栗子的功效与作用有哪些
- 不同植物油的功效与作用有哪些
- 宝塔红茶的功效与作用,黄芪红茶的功效与作用怎么样
- 罗布麻茶的功效与作用,起了解罗布麻茶的各种功效
- 窦丞相和窦太后的关系 窦融与刘秀