如何使用 Python 处理 REST API






4.38/5 (6投票s)
使用 Python 编程语言消费 REST API 端点的分步指南。
引言
如果您是一名开发者(尤其是 Python 开发者),并且正在寻找一个基础指南来学习如何使用 Python 进行 REST API 编程,那么您来对地方了,在这里您将以非常简单的方式了解 Python 的 REST API。
什么是 API?
API 是 Application Programming Interface(应用程序编程接口)的缩写。API 作为接口,使一个应用程序能够将其数据提供给第三方应用程序。
API 最常见的用途是通过发出一个在网络上广泛使用的请求来从远程网站检索数据。我们每天都能看到的最常见的 API 用途是“使用 Facebook (Facebook 登录 API)/Twitter/Google/Github 登录”。应用程序不是直接登录用户的社交媒体账户,而是使用 API 来验证用户的登录。
什么是 REST 架构?
REST 是 Representational State Transfer(表述性状态转移)的缩写,它是 Web 服务的 API 的一种软件架构风格。REST 由一组约束组成,这些约束旨在简化客户端/服务器通信的软件架构。
REST 的一些架构约束如下:
- 无状态 (Stateless):服务器不会维护来自客户端的任何请求数据。会话状态仅存储在客户端。
- 客户端-服务器 (Client-server):负责用户界面的客户端,以及负责后端和数据存储的服务器,必须相互独立。
- 可缓存 (Cacheable):从服务器检索到的数据必须可由客户端或服务器进行缓存。
- 统一接口 (Uniform interface):服务器应提供一个统一的接口来访问资源,而无需定义其表示形式。
- 分层系统 (Layered system):客户端可以通过其他层(如代理或负载均衡器)间接访问服务器上的资源。
有关更多信息,请查看维基百科。
REST API
我们已经讨论过 API 用于从远程网站检索数据。但问题是如何向远程 Web 服务器发出请求并检索数据?嗯,这是通过使用 URL 端点来完成的,URL 端点是 API 提供服务的地方,每个 URL 都称为 HTTP 请求,而发送回来的数据称为响应。
HTTP 请求
HTTP 请求包含以下组件:
- 端点 (Endpoint):指示您正在与之交互的数据的 URL。根端点是 API 的起点,用户从此处发出请求。例如,https://www.university.com/students。
/students 是端点,https://www.university.com/ 是起始 URL。 - 方法 (Method):REST API 提供方法来实现创建、读取、更新和删除 (Create, Read, Update, and Delete) 功能。REST API 使用的方法如下:
GET
– 检索数据PUT
– 替换数据POST
– 创建数据DELETE
– 删除数据
响应 (The Response)
对于每个请求,API 都会返回一个响应。
例如,终端上的 curl
命令可用于向 Open Notify API 发送 GET
请求,该 API 提供有关当前在太空中的宇航员的信息。
curl -X GET "<a href="http://api.open-notify.org/astros.json">http://api.open-notify.org/astros.json</a>"
上面,您可以看到 JSON 格式的响应,其中包含有关这些宇航员的数据。
如何使用 Python Requests 与 REST API 集成
现在,让我们了解如何使用 Python Requests 与 REST API 集成。首先,请确保您已在主机上安装了 Python 和 pip。(在本教程中,我使用的是 Linux)然后,按照以下步骤操作:
步骤 1:在终端上使用 pip 命令安装 Python Requests 模块
pip install requests
现在,您就可以开始使用 Python Requests 与 REST API 进行交互了。您应该将 Requests
库导入到您希望使用它的特定 Python 脚本中。
import requests
步骤 2:接下来,您需要使用 GET 请求数据
GET
方法用于从 REST API 检索我们感兴趣的任何资源的**数据**。在这里,我们将使用 https://randomfox.ca/,它每次都会为您提供一张可爱的小狐狸的随机图片。
我们需要创建一个对象或变量,它将存储我们将从上述网站服务器收到的所有内容(包括标头和数据有效负载),作为对 GET
请求的响应。
response = requests.get("https://randomfox.ca/floof")
print(response.status_code)
您可以访问对象中的许多内容,其中包括 print(response.status_code) 这一行,它将在您发出 HTTP 请求时返回一个状态码,告知您请求的结果。默认值为 200 或“Ok”,表示响应正常,并且所有返回的信息都是正确的。
其他 HTTP 状态码表如下:
步骤 3:检索您想要的数据(此处为随机狐狸图片)
现在,我们将使用 JSON
函数,它是 request 的一部分。所有或大多数 API 都使用一种名为 JSON 的语言(看起来有点像 Python 字典),它是一种与 API 信息通信的标准,信息格式与网站上给出的格式相同。
可以通过几种方式访问请求的内容,例如:
response.content() # Return raw bytes of data payload
response.text() # Return string representation of data payload,
# as it is string we can’t pull any data
response.json() # Convenient when the API returns JSON
response.content()
如果我们使用此方法,我们将以原始格式获取数据,输出将如下所示:
response.text()
如果我们使用此方法,我们的数据将是字符串格式,输出将如下所示:
response.json()
因此,要获取我们需要的随机狐狸图片,我们必须使用 JSON 函数。我们需要将(步骤 2 中的)print(response.status_code)
替换为 print(response.text())
,我们的最终代码将如下所示:
Import requests
response = requests.get("https://randomfox.ca/floof")
print(response.json())
您将获得以下输出:
单击链接,您将被重定向到一张随机的狐狸图片,如下所示:
备用方式/另一种方法
当我们使用 JSON 打印时,我们实际上是在处理字典。因此,我们可以创建一个新变量(fox_img
)并将其设置为 response.json()
。这个 response.json()
将获取字典并将其放入新变量(fox_img
)中,然后我们可以从中提取任何数据并打印出来。
例如,我们有两个键“image
”和“link
”,我们可以使用它们来修改我们的代码,如下所示:
使用 Image 键
由于我们使用了 image 键,API 将查找字典中的 image 键并打印其值。
代码
import requests
response = requests.get("https://randomfox.ca/floof")
fox_img=response.json()
print(fox_img['image'])
输出
因此,我们只得到了链接到我们图片的字符串
,而不是整个字典。
使用 Link 键
在这里,我们使用了 link 键,因此 API 将查找字典中的 link 键并打印其值。
代码
import requests
response = requests.get("https://randomfox.ca/floof")
fox_img=response.json()
print(fox_img['link'])
Output:
在这里,我们只获得了链接,因为它就是 link 键的值。
结论
这是一个非常简短且适合初学者的教程,为您提供了如何使用 Python 进行 REST API 编程的基本 ধারণা。您还可以使用 API 做更多的事情。一旦您获取了数据,就可以按照自己的方式使用它,并将其应用于您的任何项目中,创造奇迹。
历史
- 2021 年 12 月 4 日:初始版本