過濾輸出GET請求發送有效載荷,我可以發送JSON的API,如:在蟒蛇
curl -X GET https://api.mysite.com/user \
-H "Authorization: XXXXX" \
-H "Content-Type: application/json"
-d '{
"q": {
"name": {
"eq": "0aslam0"
}
}
}'
上述工作就好了。我試圖通過使用requests
library.I Python代碼發送相同的嘗試下面的代碼:
r = requests.get(url, headers=my_headers, params=payload)
其中
url = "https://api.mysite.com/user"
my_headers = {
'Authorization': 'XXXXX',
'Content-Type': 'application/json',
'Accept': 'application/json',
}
data = {
"q": {
"name": {
"eq": "0aslam0"
}
}
}
payload = json.dumps(data)
但r.text
含有正常GET的輸出不應用過濾器。我登錄了請求,看到我正在重定向301
。我不明白我的錯誤。
編輯1
我改變了代碼:
r = requests.get(url, headers=my_headers, json=payload)
@Martijn是正確的。使用params
是錯誤的。但上述也沒有成功。我還添加了一個標題'User-Agent': 'curl/7.40.0'
,以查看這是否可行。那裏也沒有運氣。
編輯2
API文檔說,濾波可以通過另一種方法來完成。更改網址爲:
GET /user?q%5Bname%5D%5Beq%5D=0aslam0 HTTP/1.1
它是HTML編碼的。所以我嘗試過,把我的網址格式化成這樣的格式,並避免發送有效載荷,如:
r = requests.get(url, headers=my_headers)
它的工作原理!所以至少現在我有解決我的問題。但是關於如何發送GET請求的有效載荷(上面討論的方法)的問題仍然存在。
如何授權標題形成?根據請求主體是否包含任何簽名? –
授權標頭是爲API的任何開發者生成的令牌。不,沒有任何東西像簽名依賴於請求主體。 – 0aslam0
然後我幾乎沒有想法;下面的答案會產生一個接近你的'curl'命令的請求(這是*很奇怪,因爲它使用'GET'而不是'POST')。 –