python簡單進行post接口測試,接口參考Swagger


Swagger上面找一個post接口,如圖。同樣可以先在swagger上面try it out先驗證下本接口效果

經試驗,參數如下,加上正確的token,可以正確查詢到結果:

{
"id": 283,
"name": "",
"orderBy": 2,
"pageNo": 1,
"pageSize": 20,
"queryTotal": true,
"sortString": "id"
}

接下來,我們通過python來驗證下該接口:

一開始是這樣寫的:

import requests
if __name__ == '__main__':
url = 'http://XXX.XX/api/item/v1/attribute/search'
attributeNamePageSearchModel = {
"id": 283,
"name": "",
"orderBy": 2,
"pageNo": 1,
"pageSize": 20,
"queryTotal": true,
"sortString": "id"
}
header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61"}
response=requests.post(url,data =attributeNamePageSearchModel,headers=header)
print(attributeNamePageSearchModel)
print(response.url)
print(response.text)
發現"queryTotal": true, 這一行的true有紅色報錯;嘗試改成'true'和1,運行結果依然不對;在Swagger上面也改成'true'和1,相同報錯;后經過搜索,知道python里面需要改成True才行
改成True之后運行,不是應該有的結果:

那一定是我們參數不對,接着探索,發現需要加上Content-Type;於是修改header一行:

header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61","Content-Type":"application/json"}
再運行,發現還是上述無效請求。。em,繼續看,是不是json格式的問題,於是試着轉化下,header上面加一行,同時上面還需要import json:
#python數據類型轉換為json類型(json.dumps())
attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)
再運行,ok,是想要的結果:

備注:上述有2條語句其實有2種寫法,1或2都可以:

1.

attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)
response=requests.post(url,data =attributeNamePageSearchModel,headers=header)
或者2.
response = requests.post(url, json=attributeNamePageSearchModel, headers=header)

總結:

1.json編碼的格式幾乎和python語法一致,略有不同的是:True會被映射為true,False會被映射為false,None會被映射為null,元組()會被映射為列表[];

所以想要在post請求中使用data關鍵字來傳遞json格式的字符串,首先得把dict轉為string(用到json.dumps());

或者也可以直接使用json關鍵字直接傳遞,在傳遞時會自行進行編碼為string類型(不需要json.dumps())

 
       


免責聲明!

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



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