Postman 是一個接口測試和 http 請求的神器础爬,非常好用。
官方 github 地址:https://github.com/postmanlabs
Postman 的優(yōu)點(diǎn):
支持各種的請求類型: get、post、put对室、patch、delete 等
支持在線存儲數(shù)據(jù),通過賬號就可以進(jìn)行遷移數(shù)據(jù)
很方便的支持請求 header 和請求參數(shù)的設(shè)置
支持不同的認(rèn)證機(jī)制掩宜,包括 Basic Auth蔫骂,Digest Auth,OAuth 1.0牺汤,OAuth 2.0 等
響應(yīng)數(shù)據(jù)是自動按照語法格式高亮的辽旋,包括 HTML,JSON 和 XML
以下內(nèi)容主要參考:Github: api_tool_postman
Postman 可以單獨(dú)作為一個應(yīng)用安裝檐迟,也可以作為 chrome 的一個插件安裝补胚。
chrome 插件安裝,Postman 插件地址
下面主要介紹下載安裝獨(dú)立版本app 軟件的 Postman 的過程:
去主頁Postman 官網(wǎng)找到:Postman | Apps
去下載自己平臺的版本:
Mac
Windows(x86/x64)
Linux(x86/x64) 即可。
安裝成功后糖儡,打開軟件。
對應(yīng)的Request:New -> Request
或怔匣,在右邊的 Tab 頁面中點(diǎn)擊加號+:
即可看到新建的 Tab 頁:
設(shè)置 HTTP 的 Method 方法和輸入 api 的地址
設(shè)置相關(guān) GET 或 POST 等的參數(shù)
都填寫好之后握联,點(diǎn)擊 Send 去發(fā)送請求 Request:
然后可以重復(fù)上述修改 Request 的參數(shù),點(diǎn)擊 Send 去發(fā)送請求的過程每瞒,以便調(diào)試到 API 接口正常工作為止金闽。
待整個接口都調(diào)試完畢后,記得點(diǎn)擊 Save 去保存接口信息:
去保存當(dāng)前 API 接口剿骨,然后需要填寫相關(guān)的接口信息:
Request Name: 請求的名字
我一般習(xí)慣用保存為 接口的最后的字段名代芜,比如http://{% raw %}{{% endraw %}{server_address}}/ucows/login/login中的/login/login
Request Description: 接口的描述
可選最好寫上該接口的要實(shí)現(xiàn)的基本功能和相關(guān)注意事項(xiàng)
支持 Markdown 語法
Select a collection or folder to save: 選擇要保存到哪個分組(或文件夾)
往往保存到某個 API 接口到所屬的該項(xiàng)目名的分組
填寫好內(nèi)容,選擇好分組浓利,再點(diǎn)擊保存:
此時挤庇,Tab 的右上角的黃色點(diǎn)(表示沒有保存)消失了,表示已保存贷掖。
且對應(yīng)的分組中可以看到對應(yīng)的接口了:
[warning] 默認(rèn)不保存返回的 Response 數(shù)據(jù)
直接點(diǎn)擊 Save 去保存嫡秕,只能保存 API 本身(的 Request 請求),不會保存 Response 的數(shù)據(jù)
想要保存 Response 數(shù)據(jù)苹威,需要用后面要介紹的多個 Example
比如昆咽,對于一個 GET 的請求的 url 是:http://openapi.youdao.com/api?q=糾刪碼(EC)的學(xué)習(xí)&from=zh_CHS&to=EN&appKey=152e0e77723a0026&salt=4&sign=6BE15F1868019AD71C442E6399DB1FE4
對應(yīng)著其實(shí)是?key=value形式中包含多個 Http 的 GET 的 query string=query parameters
Postman 可以自動幫我們解析出對應(yīng)參數(shù),可以點(diǎn)擊 Params:
看到展開的多個參數(shù):
如此就可以很方便的修改牙甫,增刪對應(yīng)的參數(shù)了掷酗。
且還支持,在不刪除某參數(shù)的情況下窟哺,如果想要暫時不傳參數(shù)泻轰,可以方便的通過不勾選的方式去實(shí)現(xiàn):
當(dāng)然,如果想要批量的編輯參數(shù)且轨,可以點(diǎn)擊右上角的Bulk Edit糕殉,去實(shí)現(xiàn)批量編輯亩鬼。
API 的描述中,也支持 Markdown阿蝶,官方的接口說明文檔:Intro to API documentation雳锋。
所以,可以很方便的添加有條理的接口描述羡洁,尤其是參數(shù)解釋了:
而對于要解釋的參數(shù)玷过,可以通過之前的Param -> Bulk Edit的內(nèi)容:
拷貝過來,再繼續(xù)去編輯:
以及添加更多解釋信息:
點(diǎn)擊 Update 后筑煮,即可保存辛蚊。
去發(fā)布后:
對應(yīng)的效果:有道翻譯
Postman 對于返回的 Response 數(shù)據(jù),支持三種顯示模式真仲。
默認(rèn)格式化后的 Pretty 模式
Raw 原始模式
點(diǎn)擊Raw袋马,可以查看到返回的沒有格式化之前的原始數(shù)據(jù):
Preview 預(yù)覽模式
以及 Preview,是對應(yīng) Raw 原始格式的預(yù)覽模式:
Preview 這種模式的顯示效果秸应,好像是對于返回的是 html 頁面這類虑凛,才比較有效果。
很多時候普通的 API 調(diào)用软啼,倒是沒有 Cookie 的:
舉例桑谍,此處返回的是有 Headers 頭信息的:
可以從中看到服務(wù)器是 Nginx 的。
之前想要實(shí)現(xiàn)祸挪,讓導(dǎo)出的 API 文檔中能看到接口返回的 Response 數(shù)據(jù)锣披。后來發(fā)現(xiàn)是Example這個功能去實(shí)現(xiàn)此效果的。
繼續(xù)點(diǎn)擊Save Example:
保存后贿条,就能看到Example(1)了:
單個 Example 在導(dǎo)出的 API 文檔中的效果
然后再去導(dǎo)出文檔雹仿,導(dǎo)出文檔中的確能看到返回?cái)?shù)據(jù)的例子:
多個 Example 在導(dǎo)出的 API 文檔中的效果
在剛開始一個項(xiàng)目時,為了后續(xù)便于組織和管理整以,把同屬該項(xiàng)目的多個 API胧辽,放在一組里
所以要先去新建一個 Collection:New -> Collection
使用了段時間后,建了多個分組的效果:
單個分組展開后的效果:
Postman 支持 history 歷史記錄悄蕾,顯示出最近使用過的 API:
用環(huán)境變量實(shí)現(xiàn)多服務(wù)器版本
在測試 API 期間,往往存在多種環(huán)境础浮,對應(yīng) IP 地址(或域名也不同)
比如:
Prod:http://116.62.25.57/ucows
用于開發(fā)完成發(fā)布到生產(chǎn)環(huán)境
Dev:http://123.206.191.125/ucows
用于開發(fā)期間的線上的 Development 的測試環(huán)境
LocalTest:http://192.168.0.140:80/ucows
用于開發(fā)期間配合后臺開發(fā)人員的本地局域網(wǎng)內(nèi)的本地環(huán)境帆调,用于聯(lián)合調(diào)試 API 接口
而在測試 API 期間,往往需要手動去修改 API 的地址:
效率比較低豆同,且地址更換后之前地址就沒法保留了番刊。
另外,且根據(jù)不同 IP 地址(或者域名)也不容易識別是哪套環(huán)境影锈。
Postman 支持用 Environment 環(huán)境變量去實(shí)現(xiàn)多服務(wù)器版本
后來發(fā)現(xiàn) Postman 中芹务,有 Environment 和 Global Variable蝉绷,用于解決這個問題,實(shí)現(xiàn)不同環(huán)境的管理:
很明顯枣抱,就可以用來實(shí)現(xiàn)不用手動修改 url 中的服務(wù)器地址熔吗,從而動態(tài)的實(shí)現(xiàn),支持不同服務(wù)器環(huán)境:
Production 生產(chǎn)環(huán)境
Development 開發(fā)環(huán)境
Local 本地局域網(wǎng)環(huán)境
如何使用 Enviroment 實(shí)現(xiàn)多服務(wù)器版本
或者:
Environments are a group of variables & values, that allow you to quickly switch the context for your requests and collections.
Learn more about environments
You can declare a variable in an environment and give it a starting value, then use it in a request by putting the variable name within curly-braces. Create an environment to get started.
輸入 Key 和 value:
點(diǎn)擊 Add 后:
[info] 環(huán)境變量可以使用的地方
URL
URL params
Header values
form-data/url-encoded values
Raw body content
Helper fields
寫 test 測試腳本中
通過 postman 的接口佳晶,獲取或設(shè)置環(huán)境變量的值桅狠。
此處把之前的在 url 中的 IP 地址(或域名)換成環(huán)境變量:
鼠標(biāo)移動到環(huán)境變量上,可以動態(tài)顯示出具體的值:
再去添加另外一個開發(fā)環(huán)境:
則可添加完 2 個環(huán)境變量轿秧,表示兩個服務(wù)器地址中跌,兩個版本:
然后就可以切換不同服務(wù)器環(huán)境了:
可以看到,同樣的變量 server_address菇篡,在切換后對應(yīng) IP 地址就變成希望的開發(fā)環(huán)境的 IP 了:
Postman 導(dǎo)出 API 文檔中多個環(huán)境變量的效果
順帶也去看看漩符,導(dǎo)出為 API 文檔后,帶了這種 Environment 的變量的接口驱还,文檔長什么樣子:
發(fā)現(xiàn)是在發(fā)布之前嗜暴,需要選擇對應(yīng)的環(huán)境的:
發(fā)布后的文檔,可以看到所選環(huán)境和對應(yīng)服務(wù)器的 IP 的:
當(dāng)然發(fā)布文檔后铝侵,也可以實(shí)時切換環(huán)境:
當(dāng)更換服務(wù)器時灼伤,直接修改變量的 IP 地址:
即可實(shí)時更新,當(dāng)鼠標(biāo)移動到變量上即可看到效果:
對于當(dāng)前的請求咪鲜,還可以通過點(diǎn)擊 Code
去查看對應(yīng)的符合 HTTP 協(xié)議的原始的內(nèi)容:
各種語言的示例代碼Code Generation Tools
比如:
Swift 語言
Java 語言
其他各種語言 還支持其他各種語言:
目前支持的語言有:
HTTP
C (LibCurl)
cURL
C#(RestSharp)
Go
Java
OK HTTP
Unirest
Javascript
NodeJS
Objective-C(NSURL)
OCaml(Cohttp)
PHP
Python
Ruby(NET::Http)
Shell
Swift(NSURL)
代碼生成工具的好處是:在寫調(diào)用此 API 的代碼時狐赡,就可以參考對應(yīng)代碼,甚至拷貝粘貼對應(yīng)代碼疟丙,即可颖侄。
選中某個分組后,點(diǎn)擊 Runner
選中某個分組后點(diǎn)擊 Run
即可看到測試結(jié)果:
關(guān)于此功能的介紹可參考Postman 官網(wǎng)的git 圖
直接參考官網(wǎng)享郊。
Postman 支持多 tab 頁览祖,于此對比之前有些 API 調(diào)試工具就不支持多 Tab 頁,比如Advanced Rest Client
多 tab 的好處:
方便在一個 tab 中測試炊琉,得到結(jié)果后展蒂,復(fù)制粘貼到另外的 tab 中,繼續(xù)測試其它接口
比如此處 tab1 中苔咪,測試了獲取驗(yàn)證碼接口后锰悼,拷貝手機(jī)號和驗(yàn)證碼,粘貼到 tab2 中团赏,繼續(xù)測試注冊的接口
Postman 的默認(rèn)的 Request 和 Response 是上下布局:
此處點(diǎn)擊右下角的Two pane view箕般,就變成左右的了:
[info] 左右布局的用途
對于數(shù)據(jù)量很大,又想要同時看到請求和返回的數(shù)據(jù)的時候舔清,應(yīng)該比較有用丝里。
Posman 支持兩種主題:
深色主題
當(dāng)前是深色主題曲初,效果很不錯:
淺色主題
可以切換到 淺色主題:
在服務(wù)端后臺的開發(fā)人員測試好了接口后,打算把接口的各種信息發(fā)給使用此 API 的前端的移動端人員時杯聚,往往會遇到:
要么是用復(fù)制粘貼 -> 格式不友好 要么是用 Postman 中截圖 -> 方便看臼婆,但是不方便獲得 API 接口和字段等文字內(nèi)容 要么是用 Postman 中導(dǎo)出為 JSON -> json 文件中信息太繁雜,不利于找到所需要的信息 要么是用文檔械媒,比如去編寫 Markdown 文檔 -> 但后續(xù) API 的變更需要實(shí)時同步修改文檔目锭,也會很麻煩 這都會導(dǎo)致別人查看和使用 API 時很不方便。
-> 對此纷捞,Postman 提供了發(fā)布 API
預(yù)覽和發(fā)布 API 文檔 下面介紹 Postman 中如何預(yù)覽和發(fā)布 API 文檔痢虹。
Collection
鼠標(biāo)移動到某個 Collection,點(diǎn)擊 三個點(diǎn)
Publish Docs
Publish
得到 Public URL
別人打開這個 Public URL主儡,即可查看 API 文檔
點(diǎn)擊分組右邊的大于號>
如果只是預(yù)覽奖唯,比如后臺開發(fā)員自己查看 API 文檔的話,可以選擇:View in web
等價于點(diǎn)擊Publish Docs去發(fā)布:
View in Web 后糜值,有 Publish 的選項(xiàng)(見后面的截圖)
View in Web 后丰捷,會打開預(yù)覽頁面:
比如:
奶牛云
https://documenter.getpostman.com/collection/view/669382-42273840-6237-dbae-5455-26b16f45e2b9
而右邊的示例代碼,也可以從默認(rèn)的 cURL 換成其他的:
如果想要讓其他人能看到這個文檔寂汇,則點(diǎn)擊 Publish:
然后會打開類似于這樣的地址:
Postman Documenter
https://documenter.getpostman.com/collection/publish?meta=Y29sbGVjdGlvbl9pZD00MjI3Mzg0MC02MjM3LWRiYWUtNTQ1NS0yNmIxNmY0NWUyYjkmb3duZXI9NjY5MzgyJmNvbGxlY3Rpb25fbmFtZT0lRTUlQTUlQjYlRTclODklOUIlRTQlQkElOTE=
點(diǎn)擊 Publish 后病往,可以生成對應(yīng)的公開的網(wǎng)頁地址:
打開 API 接口文檔地址:
https://documenter.getpostman.com/view/669382/collection/77fd4RM
即可看到(和前面預(yù)覽一樣效果的 API 文檔了):
如此,別人即可查看對應(yīng)的 API 接口文檔骄瓣。
后續(xù)如果自己的 API 接口修改后:
比如:
(后來發(fā)現(xiàn)停巷,不用再去進(jìn)入此預(yù)覽和發(fā)布的流程,去更新文檔榕栏,而是 Postman 自動支持)
別人去刷新該文檔的頁面:
https://documenter.getpostman.com/view/669382/collection/77fd4RM
即可看到更新后的內(nèi)容: