Python面试题更新 2026-08-05

在用 Python 编程时,怎样借助 requests 库来发起 HTTP 请求?

编码实现Python

考察说明

考查对 requests 库基本用法的掌握程度,能否清晰说出发送请求的核心步骤与关键参数。

回答思路

  1. 【回答框架 1】requests 库发送 HTTP 请求的核心是调用对应方法,如 get、post 等。方法内需要传入目标 URL,常用参数有 params 用于 URL 查询字符串,data 用于表单数据,json 用于发送 JSON 格式数据,headers 用于自定义请求头,timeout 用于设置超时时间。
  2. 【回答框架 2】以 get 为例,resp = requests.get(url, params={'key': 'value'}, timeout=5) 即可发起请求。响应对象 resp 包含 status_code 属性表示状态码,text 属性返回文本内容,json() 方法可将响应解析为 Python 字典。需注意请求后应检查状态码,并通过 resp.raise_for_status() 抛出异常。
  3. 【回答框架 3】发送 POST 请求时,若提交表单数据,用 data 参数;若提交 JSON 数据,用 json 参数,requests 会自动设置 Content-Type 为 application/json。此外可传递 files 参数上传文件,cookies 参数携带会话信息。
  4. 【回答框架 4】使用 session 对象可保持会话,复用连接,减少握手开销,适合需要保持登录状态或连续请求的场景。session = requests.Session(),之后用 session.get 等方法发送请求,效果与直接调用 requests 方法一致,但能自动管理 cookies 和连接池。
  5. 【关键点 1】发送请求需指定方法(如 get、post)和 URL,并可配置 params、data、json、headers、timeout 等参数。
  6. 【关键点 2】响应对象通过 status_code 获取状态码,text 获取文本,json() 解析 JSON,并可用 raise_for_status() 处理异常。
  7. 【关键点 3】用 session 对象保持会话,可复用连接和自动管理 cookies。
  8. 【易错点 1】不设置 timeout 可能导致请求长时间阻塞,应始终指定超时时间。
  9. 【易错点 2】误将 JSON 数据放入 data 参数,导致 Content-Type 错误,应使用 json 参数。
  10. 【易错点 3】直接访问响应内容而不判断状态码,可能因请求失败得到错误页面或空数据。