You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python SDK升级至v10后API请求报AttributeError问题求助

问题解决思路:requests SDK升级后API调用报错处理

错误根源分析

你错误地使用了requests.Request()对象:

  • requests.Request()是用来构建单个请求结构体的类,本身并没有get方法,get是requests模块的顶层方法或requests.Session对象的方法。
  • 你尝试的args.get完全是混淆了Web框架(如Flask)的请求对象属性,和requests库的Request对象毫无关系。

修正方案(两种常用写法)

方案1:直接使用requests顶层方法(单次请求场景)

import os
import json
import requests
from http import HTTPStatus

client_id = ""
client_secret = ""

os.environ["DX_GATEWAY"] = "http://api.com"
os.environ["DX_CLIENT_ID"] = client_id
os.environ["DX_CLIENT_SECRET"] = client_secret

# 拼接完整基础URL
base_url = os.environ["DX_GATEWAY"]
path = "/path/to/api"
full_url = base_url + path

params = {
    "Type": "abc",
    "Id": "def",
    "limit": 999,
    "Category": "abc"
}

# 直接调用requests.get,params参数自动拼接URL查询字符串,无需手动处理
vulns = requests.get(
    full_url,
    params=params,
    # 若API需要client_id/secret认证,添加auth参数(根据实际API要求调整)
    auth=(client_id, client_secret)
)

if vulns.status_code != HTTPStatus.OK:
    raise RuntimeError(f"API调用失败,状态码: {vulns.status_code},响应内容: {vulns.text}")

response_data = vulns.json()    
print(json.dumps(response_data, indent=2))

方案2:使用Session对象(多次请求复用场景)

如果需要频繁调用API,用Session可以复用连接池,提升效率:

import os
import json
import requests
from http import HTTPStatus

client_id = ""
client_secret = ""

os.environ["DX_GATEWAY"] = "http://api.com"
os.environ["DX_CLIENT_ID"] = client_id
os.environ["DX_CLIENT_SECRET"] = client_secret

# 创建Session对象,全局设置认证等参数
dx_session = requests.Session()
dx_session.auth = (client_id, client_secret)

base_url = os.environ["DX_GATEWAY"]
path = "/path/to/api"
full_url = base_url + path

params = {
    "Type": "abc",
    "Id": "def",
    "limit": 999,
    "Category": "abc"
}

vulns = dx_session.get(
    full_url,
    params=params
)

if vulns.status_code != HTTPStatus.OK:
    raise RuntimeError(f"API调用失败,状态码: {vulns.status_code},响应内容: {vulns.text}")

response_data = vulns.json()    
print(json.dumps(response_data, indent=2))

额外注意事项

  1. 不要手动拼接URL参数:params参数会自动处理编码和拼接,避免特殊字符导致的错误。
  2. 确认version=1的传递方式:如果是API版本参数,通常会放在URL路径(如/v1/path/to/api)或请求头中,而非get方法的参数——requests原生没有version参数,需对照API文档调整。
  3. 检查基础URL格式:确保DX_GATEWAY和path拼接后没有重复斜杠(如http://api.com//path)。

内容的提问来源于stack exchange,提问作者user19378169

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:10:28