仅持私钥时如何用Python调用Inventory API GET请求及报错排查
如何正确调用Public Inventory API获取库存数据?
看起来你在调用API的时候踩了几个常见的坑,我来帮你一步步解决:
先分析你当前代码的核心问题
- 用错了API地址:你写的
https://www.mjplatform.com/catalog是主站的网页地址,不是文档里指定的API网关地址。文档里的Base URL是https://partner-gateway.staging.mjplatform.com/v1,所以正确的接口地址应该是这个Base URL加上/catalog,也就是https://partner-gateway.staging.mjplatform.com/v1/catalog。这也是为什么你拿到HTML内容的主要原因——你访问的是网页,不是API接口。 - API密钥传递方式错误:你把密钥放在
PARAMS里,还用URL当键,这完全不符合API认证的逻辑。这类API通常会通过请求头传递密钥,而不是查询参数。 - 没有指定响应格式:你没有告诉服务器你要JSON格式的响应,所以服务器默认返回了网页内容,导致JSON解析失败,同时因为请求没有带浏览器相关的头信息,服务器还返回了"浏览器过时"的提示。
修正后的完整代码
import requests # 正确的API接口地址:Base URL + /catalog API_URL = "https://partner-gateway.staging.mjplatform.com/v1/catalog" # 你的API密钥 API_KEY = "123abc" # 配置请求头:传递API密钥,同时明确要求JSON响应 request_headers = { # 大部分API会用X-API-Key传递密钥,如果这个不行,试试Authorization: Bearer {API_KEY} "X-API-Key": API_KEY, "Accept": "application/json" } # 可选:根据需要添加过滤参数,比如获取可在线销售的重量型商品 filter_params = { "available_online": True, "uom_type": "weight" } try: # 发送GET请求 response = requests.get(url=API_URL, headers=request_headers, params=filter_params) # 检查请求是否成功(状态码200-299),否则抛出异常 response.raise_for_status() # 解析JSON响应 inventory_data = response.json() print("成功获取库存数据:", inventory_data) except requests.exceptions.HTTPError as http_err: print(f"HTTP请求错误:{http_err}") except requests.exceptions.ConnectionError as conn_err: print(f"网络连接错误:{conn_err}") except ValueError as json_err: print(f"JSON解析失败,服务器返回内容:\n{response.text}")
关键细节说明
- URL修正:一定要使用文档里提供的
partner-gateway.staging域名的API地址,主站地址不提供API服务,只会返回网页。 - 密钥传递:如果
X-API-Key头不生效,建议查看文档里的认证部分(你提到无法完整粘贴文档),试试Authorization: Bearer {API_KEY}这种格式——很多API会用Bearer token来认证。 - 请求头的作用:
Accept: application/json告诉服务器我们需要JSON格式的响应,避免返回网页;同时添加这个头也会让服务器把你的请求识别为API调用,而不是普通浏览器访问。 - 参数过滤:
filter_params字典里的键要和文档里的参数名完全一致,值的类型要符合要求(比如category_id传整数,available_online传布尔值True/False)。
关于"浏览器过时"提示的疑问
你用Python请求却收到这个提示,是因为之前访问的是主站的网页URL,服务器检测到你的请求没有携带标准浏览器的User-Agent头,所以判定你的"浏览器"过时,返回了网页提示。现在换成正确的API网关地址,并设置了Accept头后,服务器就会返回API数据,不会再出现这个问题了。
内容的提问来源于stack exchange,提问作者RustyShackleford
相关产品推荐
相关产品推荐

