使用Python进行API消费:requests库的全面介绍

Python API 消费讲座:requests 库的全面介绍

欢迎来到今天的 Python 技术讲座!今天我们要聊的是一个非常实用且强大的库——requests。如果你曾经尝试过用 Python 与互联网上的数据打交道,那么 requests 可能已经进入了你的视野。它简单易用,功能强大,是 Python 开发者工具箱中不可或缺的一部分。

在接下来的时间里,我会以一种轻松诙谐的方式,带你深入了解 requests 库的核心功能和使用技巧。无论你是初学者还是有一定经验的开发者,相信都能在这场讲座中有所收获!


讲座大纲

  1. 什么是 requests
  2. 安装与基本使用
  3. GET 请求:获取数据的艺术
  4. POST 请求:发送数据的奥秘
  5. 处理请求头与参数
  6. 文件上传与下载
  7. 错误处理与超时设置
  8. 会话管理:高效复用连接
  9. 总结与扩展

1. 什么是 requests

requests 是一个用于发送 HTTP 请求的第三方 Python 库。它使得与 Web 服务交互变得异常简单。相比内置的 urllibrequests 提供了更直观、更优雅的接口,减少了冗长代码的编写。

为什么选择 requests

  • 简单易用
  • 功能丰富
  • 社区支持广泛
  • 文档详尽(国外技术文档提到:官方文档清晰明了)

2. 安装与基本使用

首先,我们需要安装 requests。打开终端,输入以下命令:

pip install requests

安装完成后,我们可以通过以下代码验证是否成功:

import requests

response = requests.get('https://httpbin.org/get')
print(response.status_code)  # 输出状态码
print(response.text)         # 输出响应内容

这段代码向 https://httpbin.org/get 发送了一个 GET 请求,并打印了返回的状态码和内容。


3. GET 请求:获取数据的艺术

GET 请求是最常见的 HTTP 请求类型之一,通常用于从服务器获取资源。以下是一个完整的例子:

import requests

url = 'https://api.example.com/data'
params = {'key1': 'value1', 'key2': 'value2'}

response = requests.get(url, params=params)
print(response.url)          # 打印实际请求的 URL
print(response.json())       # 如果返回的是 JSON 数据,可以直接解析

国外技术文档提示params 参数会自动将字典转换为查询字符串,无需手动拼接 URL。

参数名称 描述 示例值
url 目标 URL https://...
params 查询参数(可选) {'key': 'val'}

4. POST 请求:发送数据的奥秘

POST 请求通常用于向服务器提交数据。以下是一个示例:

import requests

url = 'https://api.example.com/post'
data = {'username': 'testuser', 'password': 'securepassword'}

response = requests.post(url, data=data)
print(response.status_code)  # 输出状态码
print(response.text)         # 输出响应内容

如果需要发送 JSON 格式的数据,可以使用 json 参数:

response = requests.post(url, json={'key': 'value'})

国外技术文档建议:尽量使用 json 参数,因为它会自动设置正确的 Content-Type 头部。


5. 处理请求头与参数

有时我们需要自定义请求头或添加认证信息。以下是实现方法:

import requests

url = 'https://api.example.com/resource'
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
params = {'search': 'Python'}

response = requests.get(url, headers=headers, params=params)
print(response.headers)  # 查看响应头
print(response.content)  # 查看原始响应内容
常见头部字段 描述 示例值
Authorization 身份认证信息 Bearer ...
Content-Type 请求体的内容类型 application/json

6. 文件上传与下载

文件上传

import requests

url = 'https://httpbin.org/post'
files = {'file': open('example.txt', 'rb')}

response = requests.post(url, files=files)
print(response.json())

文件下载

import requests

url = 'https://example.com/file.zip'
response = requests.get(url)

with open('downloaded_file.zip', 'wb') as f:
    f.write(response.content)

7. 错误处理与超时设置

网络请求可能会失败,因此我们需要处理异常和设置超时时间:

import requests

try:
    response = requests.get('https://api.example.com', timeout=5)
    response.raise_for_status()  # 如果状态码不是 200,抛出异常
except requests.exceptions.Timeout:
    print("请求超时")
except requests.exceptions.HTTPError as e:
    print(f"HTTP 错误: {e}")
except requests.exceptions.RequestException as e:
    print(f"其他错误: {e}")

8. 会话管理:高效复用连接

如果需要多次向同一个服务器发送请求,使用 Session 对象可以提高效率:

import requests

session = requests.Session()

# 设置全局头部
session.headers.update({'Authorization': 'Bearer YOUR_TOKEN'})

response1 = session.get('https://api.example.com/resource1')
response2 = session.get('https://api.example.com/resource2')

session.close()

国外技术文档推荐Session 对象不仅节省资源,还能自动管理 Cookie。


9. 总结与扩展

通过今天的讲座,我们学习了如何使用 requests 库进行 API 消费。以下是主要知识点的回顾:

  • 安装与基本使用
  • GET 和 POST 请求
  • 请求头与参数的处理
  • 文件上传与下载
  • 错误处理与超时设置
  • 会话管理

如果你对 requests 的高级功能感兴趣,可以进一步探索以下主题:

  • OAuth 认证
  • 流式请求
  • SSL 验证

希望今天的讲座对你有所帮助!如果有任何问题,请随时提问。谢谢大家!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注