使用Python requests调用Coinbase API获取比特币价格出现404错误如何解决
问题原因
- 核心错误是URL路径中错误保留了Postman的路径参数占位符前缀
::Postman中:BTC-USD是路径参数的标记语法,实际发起请求时Postman会自动去掉冒号替换为实际参数值,但Python代码中直接使用带:的URL发起请求,导致Coinbase服务端无法识别:BTC这个非法的基础货币标识,因此返回Invalid base currency的404错误。 - 冗余参数说明:你请求头中携带的
a: "BTC"属于无效冗余参数,Coinbase现货价格接口完全通过URL路径中的货币对识别查询目标,不需要在请求头中额外声明货币类型。
解决方法
将URL中BTC前面的冒号删除即可,若仅查询公开现货价格,不需要携带api_key也可正常请求,修正后代码如下:
import requests # 已移除路径中BTC前的冒号,为正确的接口请求地址 url = 'https://api.coinbase.com/v2/prices/BTC-USD/spot' headers = { 'Accept': "application/json", # 仅调用个人资产等私有接口时需要填写合法api_key,查询公开现货价格可省略该参数 "api_key": "xxx" } r = requests.get(url, headers=headers) print(f"Status code: {r.status_code}") # 解析响应结果 response_dict = r.json() print(response_dict)
正常请求成功后会返回如下结构的响应:
{'data': {'base': 'BTC', 'currency': 'USD', 'amount': 'xxxxxx.xx'}}
如果需要查询其他货币对的现货价格,只需修改URL中BTC-USD部分即可,比如查询以太坊对美元的价格改为ETH-USD即可。
内容的提问来源于stack exchange,提问作者Mark Brown
相关产品推荐
相关产品推荐

