【发布时间】:2021-04-10 22:40:14
【问题描述】:
我的目标是发送一个带有数组作为参数值的 API 请求。请求 URL 是 https://api.twitter.com/2/tweets/search/recent?max_results=100&tweet.fields=lang,created_at&query=%23test。当我使用 URL 作为字符串时,它可以工作。
但是,由于使用参数字典更方便,我想使用语法response = requests.request('GET', url, headers=header, params=params),因为它允许我在单个对象中设置所有参数。
为此,我的参数字典如下所示。
params = {
"max_results": 100,
"tweet.fields": ["lang","created_at"],
"query": "%23test"
}
这里的问题是生成的 URL https://api.twitter.com/2/tweets/search/recent?max_results=100&tweet.fields=lang&tweet.fields=created_at&query=%23test。
此 URL 不起作用,因为 tweet.fields 使用 tweet.fields=lang&tweet.fields=created_at 编码,这违反了 Twitter 的重复参数政策。
'{"errors":[{"parameters":{"tweet.fields":["lang","created_at"]},"message":"Duplicate parameters are not allowed: the `tweet.fields` query parameter"}],"title":"Invalid Request","detail":"One or more parameters to your request was invalid.","type":"https://api.twitter.com/2/problems/invalid-request"}'
另一个想法是将参数更改为"tweet.fields": {"lang","created_at"},,这会导致与其他参数字典相同的 URL。
在继续使用参数字典的同时,如何以将参数编码为tweet.fields=lang,created_at 而不是tweet.fields=lang&tweet.fields=created_at 的方式对参数进行编码?
【问题讨论】:
标签: python twitter python-requests http-get