API与SDK:有什么区别

本文涉及的产品
票证核验,票证核验 50次/账号
通用文字识别,通用文字识别 200次/月
小语种识别,小语种识别 200次/月
简介:

前言

什么是 API?

什么是 SDK?

两者之间有何关系?

既然点进来了,相信你或多或少都听说过这两个名词了,因此,在为你解答之前,让我们先从一个例子出发。

假如你想开发一个 OCR 应用(通俗的说就是文字识别应用),他的功能是识别用户上传的一张图片,然后将图片中的文字识别出来返回给用户。如下图所示:

通常,OCR 应用的后端服务都会部署在云上,那么我们应该如何在移动应用程序与基于云的服务之间进行通信呢?

这就是 API 和 SDK 的用武之地了。

API

API 的特点

通信

首先我们要明白的是 API 是和通信有关的,是用于应用(服务)与其他应用(服务)对话所定义的协议。在上述例子中,你可以简单理解为 API 是 OCR 应用和云端服务之间沟通的桥梁。

那么 API 到底是什么?

API 全称 Application Programming Interface,即 「应用程序接口」

一般是指一些预先定义的函数,目的是供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,或理解内部工作机制的细节。

以 Java 为例,当你想要实现一个数组排序的功能时,你是会先手写一个排序算法,还是直接使用Arrays.sort()函数?我想你心里是有答案的。

抽象

其次,我们要理解,API 的另一个重要特点——抽象。

抽象指的又是什么?

还是以这个 OCR 应用为例,当我们在使用云端提供的文字识别能力时(比如百度文字识别),他的背后可能会有成千上万的代码,比如提供识别能力的机器学习的代码、提供 Web 能力的后端代码等等。

但是你作为一个 APP 的开发者,你需要去看这些代码是怎么写的吗?难道不知道背后的源码就不能调用百度提供的文字识别能力了吗?当然不是。

通常服务商已经给你提供了文档,告诉你如何去调用相应服务,只要你按照他的要求来即可。

因此,在你的 APP 和 OCR 服务之间,API 抽象出所有复杂的逻辑,简化了调用过程,这使得你只需要考虑获取所需的数据即可。

标准化

API 是标准化的,这意味着存在有关如何定义 API 的行业标准,比如 SOAP、REST、GraphQL 等。

API 的构成要素

那么,API 通常由什么组成呢?

首先,我们要发送一些数据到云端,即所谓的「请求」。

从本地应用发请求到云端,我们需要分几步完成,以 REST 为例。

对于 REST API 调用请求,第一步是指定传输的方法,通常是和 HTTP 方法对应的,如下图所示:

当你想要上传一张图片时,通常会使用 POST 方法,然后是传递一些参数,包括请求的内容(图像本身)。然后加上需要请求的地址,即可构成一个完整的请求。如下图所示:

之后,服务器再以 JSON 等形式将数据返还给你,在你使用的云服务的文档中也会有所标注。

SDK

说了这么多,你应该对 API 有所了解了,那么这时候问题就来了,作为开发人员,你如何在实际的项目中调用 API?

你要自己构造 HTTP 请求、拼接 URL、添加需要的参数、处理返回的 JSON 对象,麻烦吗?

麻烦。

那有没有什么好的办法简化这些操作,使得我只需要给一张图片然后就给我返回结果的呢?

自然是有的,这就是接下来我们要说的 SDK 了。

SDK 全称 Software Development Kit,软件开发工具包

一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

通俗来讲就是第三方服务商提供的实现产品软件某项功能的工具包。例如 JDK 就是一种 SDK。

还是以上面的 OCR 应用为例,如果使用了某厂商的 SDK 服务,那么我们连 HTTP 请求的构建都不需要了,仅调用一个方法,可能的代码如下图所示。

OCRResult res = ocrClient.ocr("pic.jpg").getResult();

通过调用这行代码,SDK 会自动封装 API 请求,而且作为响应,你获得的结果也不一定是 JSON 对象,也有可能是代码,例如上述代码段里的 OCRResult,这是因为 SDK 也已经将 JSON 对象反序列化成你需要的对象,比如一个 Java Model。

SDK 相当于开发集成工具环境,API 就是数据接口。API 可以在 SDK 提供的“环境”里请求。同样的,这里的“环境”也是一个抽象的概念。如果不使用 SDK,也可以直接调用 API,只不过,这个环境就要由开发者自己实现了。

区别

其实从上面的内容,我们也已了解到,API 在更多场合下更像是 SDK 的一个子集,他们的区别如下:

  • API 通常是一个函数,有特定的功能;而 SDK 是一个很多功能函数的集合体,更像是一个工具包。
  • API 通常扮演数据接口的形象,SDK 相当于一个工具环境,通常是需要在 SDK 的环境下调用 APl。
  • SDK 相较于 API 封装层次更高。

以上就是本篇文章的全部内容了,如果你觉得文章对你有所帮助,随手点个关注转发给你的小伙伴们,这对我真的很重要,你们的支持是我继续更文的动力,谢谢大家!

相关文章
|
2月前
|
编译器 API 定位技术
API和SDK的区别
API 和 SDK 的区别在于:API 是一组定义了软件组件之间交互规范的接口,用于实现不同软件组件之间的通信;而 SDK 是一个全面的工具集合,包含 API、编译器、调试器、文档等,用于特定平台的应用程序开发。SDK 范围更广,内容更丰富,更具体和具象化,适合复杂的开发需求;API 则更加抽象,侧重于功能的定义和调用方式。
|
3天前
|
XML API 开发工具
如何接入电竞体育直播API或者SDK
接入电竞体育直播API或SDK的步骤包括:1. 选择合适的API/SDK提供商,如ESL、Riot Games、Twitch等;2. 注册并获取API密钥;3. 阅读官方文档,了解接口调用和数据处理;4. 实现实时更新,确保数据同步;5. 测试与优化,确保功能稳定;6. 遵守使用规范。通过这些步骤,可成功集成电竞直播功能。
|
2月前
|
存储 自然语言处理 API
HarmonyOS SDK使用:熟悉HarmonyOS提供的开发工具和API
【10月更文挑战第21天】随着智能设备的普及,操作系统的重要性日益凸显。华为推出的HarmonyOS凭借其跨平台、分布式特性受到广泛关注。本文将从开发工具、API使用、SDK更新维护及社区支持等方面,探讨HarmonyOS SDK的使用,旨在帮助开发者高效利用这一强大平台,开启鸿蒙应用开发之旅。
88 5
|
2月前
|
编译器 API 定位技术
API和SDK的区别
API(应用程序编程接口)和SDK(软件开发工具包)的主要区别在于范围、内容、抽象程度及使用方式。API定义了软件组件间的交互规则,范围较窄,更抽象;而SDK提供了一整套开发工具,包括API、编译器、调试器等,范围广泛,具体且实用,有助于提高开发效率。
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
119 0
|
1月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
85 1
|
2月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
68 7
|
4月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
194 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
4月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
414 4
|
4月前
|
开发工具 Android开发
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
170 2

热门文章

最新文章