当前位置: 技术文章>> Python 中如何使用 requests 库处理 API 响应?

文章标题:Python 中如何使用 requests 库处理 API 响应?
  • 文章分类: 后端
  • 3119 阅读

在Python中,使用requests库来处理API响应是一项非常基础且强大的技能。requests库以其简洁的API和丰富的功能,成为了Python开发者与Web服务交互的首选工具之一。下面,我将详细介绍如何在Python中使用requests库来发送HTTP请求、处理API响应,并展示一些高级用法,帮助你在实际项目中更加高效地利用这一库。

安装requests库

首先,确保你的Python环境中已经安装了requests库。如果未安装,可以通过pip命令轻松安装:

pip install requests

基本用法

发送GET请求

GET请求通常用于从服务器检索数据。使用requests.get()方法发送GET请求非常简单:

import requests

# 发送GET请求
url = 'https://api.example.com/data'
response = requests.get(url)

# 检查响应状态码
if response.status_code == 200:
    # 读取响应内容
    data = response.json()  # 假设响应是JSON格式
    print(data)
else:
    print(f"请求失败,状态码:{response.status_code}")

发送POST请求

POST请求通常用于向服务器提交数据。使用requests.post()方法时,可以通过datajson参数来发送数据:

import requests

url = 'https://api.example.com/submit'
data = {'key': 'value'}

# 发送JSON数据
response = requests.post(url, json=data)

# 检查响应
if response.status_code == 200:
    print("数据提交成功")
else:
    print(f"提交失败,状态码:{response.status_code}")

处理响应

读取响应内容

  • response.text:以字符串形式返回响应内容。
  • response.content:以字节形式返回响应内容,适用于二进制数据(如图片、文件等)。
  • response.json():如果响应是JSON格式,可以直接调用此方法解析为Python字典。

响应状态码

通过response.status_code可以获取HTTP响应状态码,用于判断请求是否成功。常见的状态码包括200(成功)、404(未找到)、500(服务器内部错误)等。

响应头

通过response.headers可以获取响应头信息,它是一个CaseInsensitiveDict对象,允许不区分大小写地访问头部字段。

print(response.headers['Content-Type'])  # 访问Content-Type头部

高级用法

自定义请求头

在发送请求时,可以通过headers参数添加自定义的请求头:

headers = {
    'User-Agent': 'My App/1.0',
    'Authorization': 'Bearer YOUR_TOKEN_HERE'
}

response = requests.get(url, headers=headers)

超时设置

在请求过程中,可以通过timeout参数设置超时时间(秒),以避免请求长时间挂起:

response = requests.get(url, timeout=5)  # 设置超时时间为5秒

会话对象

使用requests.Session()可以创建一个会话对象,它允许你在多个请求之间保持某些参数(如cookies、头部信息等):

s = requests.Session()
s.headers.update({'Authorization': 'Bearer YOUR_TOKEN_HERE'})

response = s.get(url)

代理设置

在需要通过代理服务器发送请求时,可以通过proxies参数指定代理:

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

response = requests.get(url, proxies=proxies)

实战案例:使用requests处理API响应

假设你正在开发一个应用,需要从一个天气预报API获取当前城市的天气信息。以下是一个使用requests库处理该API响应的示例:

import requests

def get_weather(city):
    api_url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_API_KEY&units=metric"
    try:
        response = requests.get(api_url)
        if response.status_code == 200:
            weather_data = response.json()
            print(f"城市:{weather_data['name']}")
            print(f"温度:{weather_data['main']['temp']}°C")
            print(f"天气状况:{weather_data['weather'][0]['description']}")
        else:
            print("获取天气信息失败")
    except requests.RequestException as e:
        print(f"请求错误:{e}")

# 调用函数
get_weather('Beijing')

在这个例子中,我们首先构建了API请求的URL,其中包含了城市名、API密钥和单位(这里使用摄氏度)。然后,使用requests.get()发送请求,并检查响应状态码。如果请求成功,我们解析JSON响应并打印出城市的名称、温度和天气状况。如果请求失败或发生异常,我们则打印出相应的错误信息。

总结

requests库是Python中处理HTTP请求的强大工具,它提供了简洁的API和丰富的功能,使得与Web服务的交互变得简单而高效。通过本文的介绍,你应该已经掌握了如何使用requests库发送GET和POST请求、处理API响应以及使用其高级功能。希望这些知识能够帮助你在实际项目中更加灵活地运用requests库,提升你的开发效率。

最后,如果你对Python编程和Web开发感兴趣,不妨访问我的网站“码小课”,那里有更多关于Python编程、Web开发以及数据科学的精彩内容等待你去探索。在“码小课”,你可以找到从基础到进阶的各类教程和实战案例,帮助你不断提升自己的编程技能。

推荐文章