接口測試 request 的 post 請求中 json 和 data 區別


post請求中json和data

post請求中,可以使用data傳遞參數,也可以使用json傳遞參數,那么這兩種方式有什么區別呢?

 

如果參數為JSON數據,可以直接傳入json參數,它將自動編碼並將Content-Type的置為application/json

 

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.post("https://httpbin.org/post", json=payload)
print(r.text)

如果data傳遞的參數為字符串,例如【json.dumps(payload)】,則request對參數進行url編碼,Content-Type的值為None,所以data傳字符串時,一定要在header中指定Content-Type

payload = {'key1': 'value1', 'key2': 'value2'}
headers={"Content-Type": "application/json"}
r = requests.post("https://httpbin.org/post", headers=headers,data=json.dumps(payload))
print(r.text)

如果data傳遞的是字典、元組組成的列表或列表作為值的字典,則request對參數進行url編碼,Content-Type的值為application/x-www-form-urlencoded

# 字典
payload1 = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://httpbin.org/post", data=payload1)
# 元組組成的列表
payload2 = [('key1', 'value1'), ('key1', 'value2')]
r = requests.post("https://httpbin.org/post", data=payload2)
# 列表作為值的字典
payload3 = {'key1': ['value1', 'value2']}
r = requests.post("https://httpbin.org/post", data=payload3)


免責聲明!

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



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