在Postman的body的類型主要由四種類型的參數: form-data、x-www-form-urlencoded、raw、binary,如圖
由於post請求的參數才放到請求體(Body)里面,get的請求參數一般都直接跟在url后面,所以這里Body里面參數都是指的post請求參數,那post請求測試時怎么判斷選擇哪個格式的來發送參數呢
1. form-data(multipart/form-data),支持上傳文件的表單類型:
form-data對應着http請求中的Content-Type=multipart/form-data, 一般在表單中如果需要進行文件上傳時,就需要使用該格式。
它會將表單的數據處理為一條消息,以標簽為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳文件File。當上傳的字段是文件時,會有Content-Type來說明文件類型;content-disposition用來說明一些字段信息;
由於有boundary隔離,所以multipart/form-data既可以上傳文件,也可以上傳鍵值對,它采用了鍵值對的方式,所以可以上傳多個文件
下圖是fiddler抓包得到的某系統一個更新頭像的接口,在這里我們可以看到Content-Type: multipart/form-data; boundary=---------------------------21317247322879,所以提交的參數文件是以分隔符---------------------------21317247322879來隔開的,以
-----------------------------21317247322879-----來結束的
如圖所示,postman里面對該接口進行測試時參數Body里面選擇的就是form-data格式
2. x-www-form-urlencoded,表單類型的接口請求:
對應着http請求中的Content-Type為application/x-www-from-urlencoded,會將表單內的數據轉換為鍵值對,比如,name=python&age = 22,這種方式只能以鍵值對形式發送參數,一般如果不指定content-type,默認便是application/x-www-form-urlencoded,
如b站的注冊接口采用的就是這種方式發送消息,如下圖,通過抓包獲取到Content-Type為application/x-www-from-urlencoded,參數數據就是以鍵值對的形式發送的
則接口測試時選擇參數類型為x-www-from-urlencoded,如下所示
3. raw(支持各種原生的類型,JSON類型的接口請求),如:Content-Type=application/json時,則可以使用這種方式,這個是實際接口測試中,使用到最多的方式了。越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化后的 JSON 字符串
他是可以上傳任意格式的參數,可以上傳text、json、xml、html、js
如圖某系統登錄接口的就是以application/json格式提交參數
所以postman里面進行接口測試時Body就是選擇raw下面的json格式
4. binary(二進制,流類型的接口請求 ):對應着http請求中的Content-Type:application/octet-stream,只可以上傳二進制數據,通常用來上傳文件,由於沒有鍵值,所以,一次只能上傳一個文件