通过一个 get 请求获取多个参数

问题描述 投票:0回答:2

我想从 API 请求数据,但我很难在一个请求中获取多个

params

我有以下代码行:

r = requests.get('https://api.delta.exchange/v2/tickers?contract_types= call_options, put_options')

根据API文档,每个contract_type的

params
可以通过用逗号分隔来调用。使用上面的行时,它只会返回第一个名为
param
的情况,在这种情况下为
call_options
。我尝试用
&
进行分离,效果相同。由于某种原因,使用
request.get(url, params={call_options,put_options})
会导致
call_options
未定义的错误。

可能是一个非常微不足道的问题,但我很感谢您的任何帮助或建议。

enter image description here

python json python-requests
2个回答
1
投票

params
参数的正确参数是
dict
,其键是参数名称,值是逗号分隔的字符串。

r = requests.get('https://api.delta.exchange/v2/tickers',
                 param={'contract_types': 'call_options,put_options'})

1
投票

我无法重现为什么你的代码行应该只给你“看涨期权”。

以下示例和相应的输出显示 API 返回了预期的类型。

urls = ['https://api.delta.exchange/v2/tickers?contract_types=call_options', 
'https://api.delta.exchange/v2/tickers?contract_types=put_options',
'https://api.delta.exchange/v2/tickers?contract_types=call_options,put_options']

for url in urls:
    r = requests.get(url)
    print(f"URL: {url}")
    print(f"Occurences of call_options: {r.text.count('call_option')}")
    print(f"Occurences of put_options: {r.text.count('put_options')}")
    print("")

输出:

URL: https://api.delta.exchange/v2/tickers?contract_types=call_options
Occurences of call_options: 366
Occurences of put_options: 0

URL: https://api.delta.exchange/v2/tickers?contract_types=put_options
Occurences of call_options: 0
Occurences of put_options: 372

URL: https://api.delta.exchange/v2/tickers?contract_types=call_options,put_options
Occurences of call_options: 366
Occurences of put_options: 372

一般来说,您应该避免在 URL 中使用空格。

© www.soinside.com 2019 - 2024. All rights reserved.