接口測試:提交報文消息數據的四種常見格式(Content-Type)


1. application/x-www-form-urlencoded

最常見的方式,get請求和一些參數較少的post請求會采用這種格式來傳輸數據,在jmeter中,如果不指定content-type,默認便是application/x-www-form-urlencoded;

  • 其提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼

2. application/json

這個是實際接口測試中,使用到最多的方式了。越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化后的 JSON 字符串。由於 JSON 規范的流行,除了低版本 IE 之外的各大瀏覽器都原生支持 JSON.stringify,服務端語言也都有處理 JSON 的函數,使用 JSON 不會遇上什么麻煩。

看一個示例:

{
	"areaCode": "86",
	"signedKeyPri": "a0aff5d29d0aabb1adbf401beb5c732e8a30316f627ef926db871335f5459e47",
	"signedKeyPub": "05e6db735d456d82e85347ddc08cea7cbc1007a99a2a8c50539a429f5405785377",
	"mobile": "13049368566",
	"identityKeyPri": "38e32595f1a0521f13272c1f9d7e990bf795fa8cb45ca6c24dc16e2b07ef7041",
	"identityKeyPub": "056441a42fa9f776eade8be4bb125e341edcfcfc42276f4db59cd663dfa796901c",
	"nickname": "永不言棄66",
	"validateCode": "076521",
	"password": "1386216b52067a593d30aa634d8c4f29"
}

使用json的好處:

  • 簡潔,我們可以一眼就看出其中的內容,方便檢查排錯
  • JSON更加輕量級,不管是編寫,傳輸,還是解析都更加高效
  • JSON在傳輸過程中采用了壓縮技術,更加的節省寬帶

3. multipart/form-data

一般涉及到上傳文件的接口,都會用此方式提交數據。在jmeter中使用時,需要在http請求中勾選對post使用multipart/form-data選項。看一個請求示例:

POST /file/chat/upload HTTP/1.1
User-Agent: Dalvik/2.1.0 (Linux; U; Android 8.0.0; Android SDK built for x86 Build/OSR1.180418.024)
accessToken: 7cce9cc8-1ed1-4327-a387-13135d614b78
userId: 1267387243547361281
lang: zh
deviceId: 00000000-194e-a514-0000-00004bd9a8c7
Content-Type: multipart/form-data; boundary=f3afd4d5-2cd5-4b02-8c2f-e11917ad5fb1
Content-Length: 65236
Host: lmm.yunti163.top:9999
Accept-Encoding: gzip
Connection: keep-alive

--f3afd4d5-2cd5-4b02-8c2f-e11917ad5fb1
Content-Disposition: form-data; name="thumbnail"; filename="1590638969087CgEIDF7POWyAOEAdAAC13wtSk4o87.jpeg"
Content-Type: image/png
Content-Length: 18173

這個例子稍微復雜點。首先生成了一個 boundary 用於分割不同的字段,為了避免與正文內容重復,boundary 很長很復雜。然后 Content-Type 里指明了數據是以 multipart/form-data 來編碼,本次請求的 boundary 是什么內容。消息主體里按照字段個數又分為多個結構類似的部分,每部分都是以 --boundary 開始,緊接着是內容描述信息,然后是回車,最后是字段具體內容(文本或二進制)。如果傳輸的是文件,還要包含文件名和文件類型信息。消息主體最后以 --boundary-- 標示結束。

4. text/xml

這是一種使用 HTTP 作為傳輸協議,XML 作為編碼方式的遠程調用規范。


免責聲明!

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



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