python接口測試(post,get)-傳參(data和json之間的區別)


python接口測試如何正確傳參:

 

POST

傳data:data是python字典格式;傳參data=json.dumps(data)是字符串類型傳參

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

import requests
import json

url = "http://xxxxxxxxxxxx/oauth/token"

data = {
        "clientId": "xxxxxxxxxxx",
        "password": "123456",
        "userName": "admin",
        "VerificationCode": "",
        "VerificationCodeKey": "f7dc3967-bfbc-4a0f-9e2d-4d6e403d10a1"
}

r = requests.post(url, data=json.dumps(data))
print(r.json())

傳json:data是python中字典類型;傳參json=data是json類型

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

import requests
import json

url = "http://xxxxxxxxx/oauth/token"

data = {
        "clientId": "xxxxxxxx",
        "password": "123456",
        "userName": "admin",
        "VerificationCode": "",
        "VerificationCodeKey": "f7dc3967-bfbc-4a0f-9e2d-4d6e403d10a1"
}

r = requests.post(url, json=data)
print(r.json())

通過截圖可以看出post傳參的形式

 

 

 

 從源碼可以看出來,data和json傳參既可以是str也可以是dict,

data和json的區別:

1、不管jsonstr還是dict,如果不指定headers中的content-type,默認為application/json

2、data參數為dict時,如果不指定content-type,默認為application/x-www-form-urlencoded,相當於普通form表單提交的形式,此時數據可以從request.post里面獲取,而request.body的內容則為a=1&b=2的這種形式,注意,即使指定content-type=application/json,request.body的值也是類似於a=1&b=2,所以並不能用json.loads(request.body.decode())得到想要的值

3、data參數str時,如果不指定content-type,默認為application/json

4、用data參數提交數據時,request.body的內容則為a=1&b=2的這種形式,用json參數提交數據時,request.body的內容則為'{"a": 1, "b": 2}'的這種形式

 

get

傳params

url = 'http://www.kuaidi100.com/query'


data = {"type": "shentong",
        "postid": "77300421263133"}

r = requests.get(url, params=data)
print(r.json())

 


免責聲明!

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



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