![](/img/trans.png)
[英]How to send nested dictionary as params in python requests.get?
[英]Python Requests - send null as query params value
我的 URL 可以將 null 作為查詢參數的值,如下所示:
https:/api.server.com/v1/users/?parent=null
當我嘗試使用請求在 Python 中發送請求時,我正在傳遞None
:
requests.get(
BASE_URL + USER_URL,
headers = get_headers(),
timeout = 60,
params = {
'parent': None
}
)
但是,如果它設置為None
,它似乎會跳過查詢參數parent
。 我怎么能強迫它?
您不能使用resquests
package 傳遞null
值,因為它是文檔中所述的默認行為:
請注意,任何值為 None 的字典鍵都不會添加到 URL 的查詢字符串中。
一些解決方案:
null
,或者;0
/ -1
,或者;parent=false
或no-parent=true
。'null'
,因為它可以根據您使用的后端框架進行不同的解釋。 但如果是這樣的話,你可以這樣做。正如@lepsch 所提到的, requests
庫不會將None
值添加到您的查詢參數中。 但是,我覺得整個問題存在誤解。
URL https:/api.server.com/v1/users/?parent=null
沒有將查詢參數設置為None
。 它實際上設置為'null'
,這實際上是一個字符串,其中包含數據“null”。 因此,如果您想這樣做,您只需將請求中的None
更改為'null'
:
requests.get(
BASE_URL + USER_URL,
headers = get_headers(),
timeout = 60,
params = {
'parent': 'null'
}
)
# This will request
# https:/api.server.com/v1/users/?parent=null
但是,如果您想要一個真正的 null 值,那么您應該考慮放置一個空字符串值...:
...
params = {
'parent': ''
}
...
# This will request
# https:/api.server.com/v1/users/?parent=
...或使用實際的 null 編碼字符,如本答案所述:
requests.get(
BASE_URL + USER_URL + "?parent=%00", # Must be added directly, as to not encode the null value
headers = get_headers(),
timeout = 60
)
# This will request
# https:/api.server.com/v1/users/?parent=%00
不會跳過任何參數,就好像沒有設置這樣的參數一樣。
導入請求
r = requests.get('http://localhost:9090/events', params = { 'param1': None, 'param2':'', 'param3':'param_val' })
打印(r.url)
結果:http://localhost:9090/events?param2=¶m3=param_val
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.