Python Requests - response.raise_for_status()

2025年1月5日 | 阅读 3 分钟

想象一下,您正在开发一个需要发出 HTTP 请求的 Python 项目。当您向特定 URI 发送请求并等待服务器响应时。但您如何知道服务器是否引发了错误?此时,response.raise_for_status() 方法在检查服务器错误发生的情况方面变得至关重要。它会检查响应中的错误,并在发现错误时发出警告。让我们深入了解这个强大的方法,它在 Python 的 requests 模块中很重要。

使用 response.raise_for_status() 的目的

那么,我们为什么使用 response.raise_for_status() 方法呢?它就像您代码中的一个错误检测器。它会检查请求过程中是否发生了错误。如果它捕获到一个错误,即 404 状态码,它将抛出一个 HTTPError 对象。此方法可确保响应是合理的,并且不会导致客户或服务器错误。它是调试代码和确保 HTTP 请求可靠性的强大方法。

我们如何使用 response.raise_for_status()?

假设您正在构建一个天气应用程序,用于从天气 API 获取数据。请求 API 后,您可以调用 response.raise_for_status() 来验证状态码。如果状态码表明请求成功,程序将继续执行而不会引发异常。但是,如果状态码在 400 到 600 的范围内(客户端或服务器错误),则会引发异常,您可以在代码中相应地处理它。

如果状态码落在 400 到 600 的范围内(客户端或服务器错误),则会引发异常。如果状态码表示请求成功(例如,200 OK),则程序将继续执行而不会引发异常。

示例

让我们通过 ping 两个 URL 来说明 response.raise_for_status() 的用法:github.com 和 seowebfix.com。

注意:要运行下面的代码,您必须首先在系统上安装最新版本的 Python。然后,使用命令提示符或 CMD 安装 requests 库。

在 Windows 操作系统中安装 requests 库的命令

对于 Linux

首先,安装 Python,其中 pip 将默认安装。然后运行以下命令

对于 macOS

与 Windows 和 Linux 类似,先安装 Python,然后使用命令安装 pip 和 requests 库

安装 PIP 的命令

安装 Requests 的命令

代码

输出

C:\Users\hp\Desktop>python request.py
<Response [200]>
None
Traceback (most recent call last):
  File "C:\Users\hp\Desktop\request.py", line 17, in <module>
    print(response.raise_for_status())
 
  File "C:\Users\hp\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://seowebfix.com/vivek/

说明

在上述程序中,我们在上面的代码中导入 'requests' 模块以发出 HTTP 请求。然后,它向 'https://api.random.org/json-rpc/1/invoke' 发送 GET 请求并打印响应对象。之后,它向错误的 URL 'https://tpointtech.cn/vivek/' 发送另一个 GET 请求,并针对该请求引发错误。

重要概念

  • 虽然 Python 中有几个用于发出 HTTP 请求的库(例如 httplib、urllib),但 requests 因其出色的功能而脱颖而出。
  • 如果请求对象的任何属性指定为 NULL,您可以使用 response.status_code 来检查状态码。
  • 如果 status_code 不在 200 到 299 的范围内,请检查您用于资源的请求方法和 URL。

结论

在 Python 中,requests 库提供了一个方便的方法 response.raise_for_status() 来优雅地处理 HTTP 错误。当在响应对象上调用此方法时,如果响应状态码指示错误(4xx 或 5xx),它将引发一个异常。它简化了 HTTP 请求中的错误处理,使开发人员能够及时识别和解决诸如损坏的 URL、服务器错误或未经授权的访问等问题。实现 raise_for_status() 可以提高代码的可靠性,简化调试,并确保 Python Web 应用程序中的强大错误管理。