requests庫之post請求data傳參和json傳參


我們知道,request 庫的post請求方法即支持data 傳參也支持json傳參

 

import requests,json

url = 'http://httpbin.org/post'
data = {'some': 'data'}


r1 = requests.post(url, data=data)
r2 = requests.post(url,data=json.dumps(data))
r3 = requests.post(url,json=data)
r4 = requests.post(url=url,json=json.dumps(data))

# data 傳入dict
# 查看輸出 Content-Type:application/x-www-form-urlencoded
# 即鍵值對的形式:
# 類似some=data&xxx=xxx 的形式
print(r1.request.headers)
# data 傳入str類型參數
# 查看輸出 Content-Type沒設置
print(r2.request.headers)

# json 傳入dict和str類型參數
# request內置的json會將dict 轉換成json字符串
# 查看輸出Content-Type自動設置為application
print(r3.request.headers)
print(r4.request.headers)
# 獲取請求參數
print(r3.request.body)
print(r4.request.body)

總結:

使用data傳參時:

data傳入 dict 時,請求頭 默認設置為Content-Type:application/x-www-form-urlencoded

data 傳入str 時,請求頭不會默認設置任何 內容類型,如果想要使用data傳參str類型的參數時

建議單獨設置一個請求頭並設置其內容類型為'Content-Type': 'application/json'

 

json 傳參時,傳參類型必須是str ,requests庫 將會默認設置請求頭的內容類型為'Content-Type': 'application/json'

但需要注意的是,參數類型為dict的情況下 是無需將dict  轉換為str的,

因為在requests模塊內部已經自動為你做了這件事

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM