作者:侯樹成;
來源:Tomcat那些事兒
WEB應用開發或者測試的時候,總免不了需要發送 HTTP 請求。
首先請你想一下,我們要發送一個HTTP請求的時候,腦海中出現的是怎樣一種順序呢?
我猜,大概和HTTP規範裡的寫法也差不了太多。基本會是:我要發送一個 GET/POST 請求到 XX網站。 傳X,Y,Z這幾個參數。或者是我要發XX網站發送X,Y這幾個參數,上傳Z文件之類的。
這種時候,你一般是用什麼工具測試呢? Postman,Curl?
啊哈,我一般也是用這兩個工具。
我想大家基本類似。圖形界面的工具一般用 Postman, 命令行工具,則會使用 curl。不過話說回來,curl命令除了個別的幾個參數,大部分都記不住。經常都是用到的時候現去查。
後來在 Spring 大會上,看幾個演講者都在使用幾個不錯的命令行工具。其中進行HTTP 請求測試的工具是個名為「HTTP派」的工具。最近查到了,就是下面這個: 「HTTPie」,分享給大家。
這是個什麼工具呢?
官網:https://httpie.org/
官網介紹的時候,還貼心的把發音都給加上了「aitch-tee-tee-pie」。
官網概括的是這樣一句話:
a command line HTTP client with an intuitive UI, JSON support, syntax highlighting, wget-like downloads, plugins, and more。
特點如下:
富有表現力,語法直觀
格式化和帶彩色的終端輸出
內置對 JSON 的支持
支持表單和文件上傳
支持 HTTPS、代理以及認證
任意請求數據
自定義 headers
持久化 sessions
類似 Wget 的下載
支持 Linux, Mac OS X 和 Windows 系統
支持插件
…
回到前面的場景,我們通過命令行發送一個請求的時候,在 HttpPie 裡異常簡單。
http GET localhost:8080
即可。
我們看到,整個用起來,很符合我們語言描述的習慣。發送請求,要使用的HTTP 方法, 目標地址 傳遞參數等等。
比如我們要發送的是 POST 請求,並且帶參數,那直接這樣寫
http POST abc.com/test abc=def userid=123
這樣就給abc.com/test 發了一個 POST 請求,帶了兩個參數: abc 和userid。
而且,更有趣的是,這兩個參數默認會被以application/json的形式傳遞,我們不再需要將所有的參數整合成json串,也不需要顯式的指點ContentType。
如果我們是在本地調試,那更簡單了。
直接執行 http :8080/context 就把請求發到了應用上。連 localhost 都省了。
更方便的是,你想把本地的一個txt文件或者JSON文件做為參數內容傳遞,那直接在參數裡寫成這樣即可
要把JSON 請求改成 form 提交,也很簡單, http -f 。增加一個 「-f」的選項就實現了。
你說頁面上有安全驗證,那也難不倒它。 我們以測試 tomcat 的 manager 應用為例,
http -a tomat:tomcat :8080/manager/html
-a 指定了要進行BASIC認證。
用戶名:密碼 就完成了認證,著實簡單了不少。
如果嫌輸出的內容多,你只關心header或者body,那加個參數就OK,比如在請求中加-h 代表輸出header信息, -b就表示輸出 body的信息。
要下載一個文件,也是 So easy:
http --download https://github.com/jkbrzt/httpie/archive/master.tar.gz
自己本地操作想要實驗一下,也不需要自己寫 Demo。 啟動起來 Tomcat,自帶的 manager 應用可以驗證 BASIC 認證, examples 裡可以驗證 POST 請求,from 提交等等。
看了半天,想不想試試?
安裝也簡單,在各個操作系統上安裝都不難。
從名字裡大概也聽的出來,Pie 和 py 一個音,所以這貨是基於python 的,Windows 平臺安裝的時候直接通過python 的 pip 安裝 httpie 就行。
Linux/Mac 我想更難不倒你。 brew/yum 這類命令更是直達目標。
不想安裝嚐個鮮? 官網也提供了一個在線的工具:
https://httpie.org/run 訪問之後就是個在線的Linux 命令行,直接就能上手操作了。
閱讀更多 javafirst 的文章