測試圖片上傳介面中遇到的問題及解決辦法
測試一個圖片上傳介面,頁面如下:
點擊「上傳」按鈕,選擇圖片後,就能上傳了。
用Python寫程序,來測試這個介面。
首先,Fiddler抓包,看一下請求報文和響應報文,如下圖:
這是上傳圖片所觸發的http請求,也就是圖片上傳介面。
請求報文:
這是請求報文的部分介面,通過上圖,可以知道:
1.這是post請求
2.Content-Type是multipart/form-data
響應報文:
分析上圖,可知:
1.返回報文是json格式
2.通過httpStatus和success欄位的值來判斷介面是否調用介面成功
為啥總是強調Content-Type呢?
因為哈,post請求,向伺服器發送數據,發送的數據類型,也就是Content-Type主要有以下幾種:
1.application/x-www-form-urlencoded
2.multipart/form-data
3.application/json
4.text/xml
不同的數據類型,我們寫的程序也是不一樣的。
關於multipart/form-data,大家可以看一下這篇文章:
本文關鍵詞:
Python2、multipart/form-data、上傳文件
這次還用Requests這個庫。
Requests官方文檔是這麼寫的,如下圖:
我也寫了類似的程序,如下:
但是介面沒有返回成功,報錯兒如下:
剛才試了,我們的介面是沒有問題的,返回了正確的結果,為什麼我自己用python寫程序來調用介面,介面就返回錯誤信息了呢?
那就只能有一種解釋了,我們寫的程序有問題,給介面發送了錯誤的數據,那麼介面也就給我們返回了錯誤的信息。
開始排查,先比較一下python程序發出的請求報文和正確的請求報文之間的區別:
python程序發出的請求報文:
正確的請求報文:
只看最後一項,一個是name="file",一個是name="files",找到差別了,改一下程序,如下:
改動前:
改動後:
這次一改動,介面就返回成功信息了,哈哈,如下:
決心看一下js代碼,如下:
上面應該就是上傳圖片的那段js代碼,在代碼中,把上傳框的名字命名成了files,因此就只能是files,而不能是file了。
以上為個人總結,歡迎各位同學批評指正!


TAG:小期科技 |