API 基本概念、功能分类、认证方式、使用方法和开发流程
API 是应用程序编程接口,用于定义软件组件间的交互规范。本文总结了 API 的核心概念、四大功能分类(数据访问、特定功能、集成扩展、工具库)、四种常见认证方式(API Key、OAuth、Token、JWT)以及标准的使用步骤。同时详细阐述了从需求明确到监控维护的 API 开发全流程,并对比了 API 与 SDK 的区别,为开发者提供系统性的参考指南。

API 是应用程序编程接口,用于定义软件组件间的交互规范。本文总结了 API 的核心概念、四大功能分类(数据访问、特定功能、集成扩展、工具库)、四种常见认证方式(API Key、OAuth、Token、JWT)以及标准的使用步骤。同时详细阐述了从需求明确到监控维护的 API 开发全流程,并对比了 API 与 SDK 的区别,为开发者提供系统性的参考指南。

API 是应用程序编程接口(Application Programming Interface)的缩写。它是一组定义了软件组件之间交互的规范和方法的集合。API 允许不同的软件系统之间进行通信和交互,使它们能够相互访问和共享功能、数据和服务。
API 可以被看作是一个桥梁,它定义了如何与某个软件组件或服务进行交互。通过使用 API,开发人员可以调用其他软件或服务提供的功能,而无需了解底层实现的细节,只需按照 API 的规范进行调用。
开发人员可以调用 API 从其他应用程序、数据库或服务中获取数据。例如调用 Gitee 平台提供的 API 获取组织下仓库信息。
开发人员可以通过调用 API 使用其他软件或服务提供的特定功能,例如发送电子邮件、处理图像、进行支付等。比如调用百度地图提供的 API 进行地理编码、调用 Gitee 的 API 创建 PR。
开发人员可以通过调用 API 帮助不同的软件系统进行集成,使它们能够互相配合工作,共享数据和功能。
通过调用 PyPI 的 API 安装 numpy 等第三方库,开发者可以充分利用库提供的功能和特性,加速开发过程,并减少重复的工作。
从 PyPI(Python Package Index)安装库涉及访问远程服务器上的 API 服务。PyPI 是 Python 的软件包仓库,它存储了各种 Python 库和工具的源代码和元数据。当您使用 pip 命令从 PyPI 安装库时,实际上是向 PyPI 的 API 发送请求,以获取库的信息和源代码,并将其下载到本地环境中。PyPI 的 API 提供了一种标准化的方式,供开发者使用 pip 或其他工具从远程服务器下载库。这个 API 允许您搜索库、获取库的详细信息、获取库的版本列表,并下载库的源代码。
一般调用 API 都需要 API 认证,API 认证是一种常见的安全机制,用于验证请求方的身份并授权其访问 API 的特定资源或功能。
**是什么:**它是一个唯一的字符串,用于标识和验证 API 的用户。当你向 API 发送请求时,你需要在请求头中包含你的 API Key,以证明你有权访问该 API。
**为什么:**API 是一个'特权房间',不是所有人都可以随便进入。只有拿到钥匙(API Key)的人,才有资格使用这个'房间'的服务。
**用途:**用于确认用户身份。
**使用方法:**当你注册一个应用或网站时,它们通常会给你一串代码,这就是 API Key。你需要在使用 API 时,把这串代码带上。
**是什么:**OAuth(开放授权)是一个开放标准,用于通过第三方应用程序访问用户存储在另一服务提供商上的信息,而无需将用户名和密码提供给第三方应用。这意味着用户可以授权一个服务(如应用程序)访问他们在另一个服务上(如社交媒体)的信息。
**为什么:**因为有时候,我们需要让不同的'房间'(API 或应用)之间能够互相通行。OAuth 就是实现这一目的的最佳工具。
**用途:**社交登录:例如,使用 Facebook 或 Google 账号登录其他应用。数据共享:例如,让一个健康应用访问你的运动数据。
**使用方法:**当你在一个新网站点击'用 Facebook 登录'时,实际上就是在使用 OAuth。
是什么:'临时通行证',只在短时间内有效。
**为什么:**更安全地保护你的账号信息。即使别人截获了你的一次请求,由于'令牌'很快就会过期,所以风险相对较小。
**用途:**常用于需要实时数据交换的应用,比如即时通讯、在线游戏等。
**使用方法:**通常,在你首次登录后,系统会生成一个'令牌'(Token)给你。每次请求数据时,你都需要带上这个'令牌'。
**是什么:**是一种更先进的认证方式。它就像是一个'身份证',里面包含了你的所有信息。
**为什么:**它不仅能证明你是你,还能存储额外的信息。这样,服务器就不需要再去数据库里查找你的信息,提高了效率。
**用途:**常用于需要实时数据交换的应用,比如即时通讯、在线游戏等。
**使用方法:**与 Token-Based 认证类似,你也需要在每次请求时带上这个'身份证'。
调用 API 时,通常是指通过网络请求访问远程服务器上的 API 服务。这些 API 服务可能提供不同的功能,如获取数据、执行特定任务、访问第三方服务等。调用 API 需要构建合适的请求,发送请求到 API 服务器,并处理服务器返回的响应。
以下是一个使用 Python requests 库调用公共 API 的简单示例:
import requests
# 定义 API 端点和参数
url = "https://api.example.com/data"
headers = {
"Authorization": "Bearer YOUR_TOKEN_HERE",
"Content-Type": "application/json"
}
params = {"page": 1, "limit": 10}
try:
# 发送 GET 请求
response = requests.get(url, headers=headers, params=params)
# 检查状态码
if response.status_code == 200:
data = response.json()
print("获取成功:", data)
else:
print(f"请求失败,状态码:{response.status_code}")
except Exception as e:
print(f"发生错误:{e}")
API 的开发流程一般如下:
开发的重点:API 的 URL 路径、请求方法(如 GET、POST 等)、参数和返回结果的格式(如 JSON、XML 等),以及错误处理机制、API 的代码逻辑(包括请求处理、数据处理、身份验证和授权)。
API(应用程序编程接口)和 SDK(软件开发工具包)是软件开发中常用的术语,它们有一些区别和关联。
API 是一组定义了软件组件之间交互规则的接口。它提供了一种标准化的方式,让不同的软件组件之间可以进行通信和交互。API 定义了如何构建请求、发送请求、处理响应等操作,以实现特定的功能或访问特定的服务。API 通常是由服务提供商提供,供其他开发者使用。
SDK 是一个软件开发工具包,它是为了简化和加速开发者使用某个特定服务或库的过程。SDK 通常包含 API 的实现和一些辅助工具、示例代码等资源,以帮助开发者更方便地使用特定的服务。SDK 可以提供一些高级抽象和封装,隐藏底层的细节,使开发者能够更快速地集成和使用特定的功能。
假设有一个名为 "CloudStorage" 的云存储服务,它允许开发者上传、下载和管理文件。这里我们将以 API 和 SDK 的角度来看待它们的区别。
API: CloudStorage 提供了一组 API,定义了与云存储服务进行交互的规则和操作。这些 API 可能包括上传文件、下载文件、列出文件、创建文件夹等功能。
开发者可以使用 HTTP 请求(如 GET、POST、PUT、DELETE)来调用这些 API,并传递相应的参数和数据。例如,通过发送一个 HTTP POST 请求到 https://api.cloudstorage.com/files/upload 来上传文件。
API 提供了一种标准化的接口,让开发者能够与云存储服务进行通信,并执行各种操作。
SDK: CloudStorage 还提供了一个 SDK,它是一个软件开发工具包,包含了使用 CloudStorage 服务的资源和实现。
SDK 可能包括一个封装了 API 调用的库,以及一些辅助工具和示例代码。
开发者可以通过引入 CloudStorage SDK 到他们的项目中,使用 SDK 中提供的高级抽象和封装来简化与云存储服务的交互。
例如,SDK 可能提供一个名为 cloudstorage.upload(file_path) 的函数,开发者只需调用该函数并传递文件路径,SDK 会自动处理底层的 API 调用和文件上传过程。
在上述示例中,API 是 CloudStorage 服务的核心,而 SDK 是为了简化开发者使用 CloudStorage 服务的过程而提供的工具包。开发者可以选择直接使用 API 来与服务进行交互,或者使用 SDK 来获得更高级的抽象和便利性。
API 是一组定义了交互规则的接口,开发者可以通过发送 HTTP 请求来调用这些 API,实现与服务的交互。
SDK 是一个工具包,它包含了使用特定服务的资源和实现,提供了一些高级抽象和封装,使开发者能够更方便地使用服务。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online