如何将PagerDuty用户查询curl命令转为Python requests.get并解决过滤失效问题
正确的Python requests转换方法
你的问题出在对requests.get的params参数用法理解有误——--data-urlencode是curl的命令选项,不是API接口的参数名,requests会自动帮你处理URL编码,不需要手动指定这个选项。
正确的写法应该把team_ids以列表形式传入params,requests会自动将其编码为team_ids[]=abc的格式,和你原来的curl命令效果一致:
import requests response = requests.get( 'https://api.pagerduty.com/users', params={"team_ids": ["abc"]}, headers={ 'Accept': 'application/vnd.pagerduty+json;version=2', 'Authorization': 'Token token=xxx' } )
为什么原来的写法无效?
你之前把"data-urlencode"作为参数键传给params,这会让请求的URL变成https://api.pagerduty.com/users?data-urlencode=team_ids%5B%5D%3Dabc,这显然不是PagerDuty API期望的参数格式,自然无法实现团队过滤。
内容的提问来源于stack exchange,提问作者Gary Turner
相关产品推荐
相关产品推荐

