什么是 xml ?
xml 是一種和 html 非常類似的語言,采取一定的格式展示數(shù)據(jù)。比如:
這個(gè)例子非常形象的指明:
- 這是一個(gè)便條
- 便條是給你的
- 便條是我寫的
- 標(biāo)題是:提醒
- 內(nèi)容是:今晚八點(diǎn),不見不散
xml 和 html 的區(qū)別
- xml 設(shè)計(jì)的初衷在于傳輸數(shù)據(jù),重點(diǎn)在數(shù)據(jù);
- html 設(shè)計(jì)的初衷在于展示數(shù)據(jù),重點(diǎn)在展示;
- html 通過和 css 的組合能展現(xiàn)非常美觀的效果,xml 志不在此。
接口當(dāng)中為什么會(huì)有 xml ?
xml 的作用和 json 實(shí)在是太像了。通過 json, 可以代替 xml 的作用:
以前,接口通常會(huì)采用 xml 來傳輸數(shù)據(jù)。而現(xiàn)在,大多數(shù)接口都是采用 json 進(jìn)行數(shù)據(jù)傳遞, xml 已經(jīng)被冷落了,主要的原因是:
- json 數(shù)據(jù)傳輸量較小,xml 常常要使用各種屬性,冗余信息較多;
- json 支持?jǐn)?shù)字, 布爾, null, 數(shù)組,對象等通用格式,xml 都是文本;
- json 解析更方便
但是,還是有一些公司的接口是采用 xml, 比如大名鼎鼎的微信,很多接口還是采用 xml。原因是 xml 在一些特定領(lǐng)域還占有一些優(yōu)勢:
- 可讀性稍微占優(yōu)勢;
- 對于 UI 頁面,可以更方便的使用屬性這樣一種形態(tài)進(jìn)行頁面數(shù)據(jù)的傳輸,比如Android/ target=_blank class=infotextkey>安卓應(yīng)用。
- 歷史優(yōu)勢。xml 相比 json 發(fā)展更早,還有很多有經(jīng)驗(yàn)的程序員偏愛 xml, JAVA程序員有喜歡 xml 的傾向(現(xiàn)在已經(jīng)很少了)。微信的很多 api 還是用 xml,也許是出于這些原因。
xml 和 json 的區(qū)別,歸根結(jié)底在于他們表達(dá)數(shù)據(jù)的方式不同,xml 用的是樹形結(jié)構(gòu), json 對應(yīng)的是 hash 映射。
使用工具測試 xml 數(shù)據(jù)接口
接口發(fā)送 xml 格式的數(shù)據(jù)和發(fā)送 json 幾乎一樣,只需要把格式改成 xml 就可以了。
采用 postman 接口測試工具 往接口https://httpbin.org/post 發(fā)送以下 xml 數(shù)據(jù):
postman 數(shù)據(jù)填寫:
通過 fiddler 抓包可以查看到發(fā)送的數(shù)據(jù):
通過 postman 查看返回結(jié)果:
通過上面的例子得出:
- xml 格式的發(fā)送只需要修改請求頭格式
- 請求頭格式為 Content-Type: Application/xml
使用 Python 編程語言測試 xml 數(shù)據(jù)接口
使用 python 語言的 requests 庫可以很方便的發(fā)送 xml 格式的數(shù)據(jù),只需要把請求頭格式換成 application/xml 就可以了:
xml 數(shù)據(jù)存儲(chǔ)在文件當(dāng)中
測試數(shù)據(jù)如果不是通過在代碼中直接傳遞,而是通過文件形式存儲(chǔ),則使用 python 當(dāng)中的 open 函數(shù)直接讀取。
相應(yīng)代碼:
說明:本文為檸檬班雨澤老師原創(chuàng),轉(zhuǎn)載需注明出處