請求訊息發送者,別名為 — — HTTP Client,
可用於 開發 Web 應用、debug、測試 API …。
日前已介紹過,利用 表單 與其 方法欺騙 的方式送出請求,
以及 JavaScript 發送請求的方式:
(I) XMLHttpRequest、(II) jQuery Ajax、(III) Fetch API。
然而,前者不利於測試,且無法真正有效發送 GET、POST 外的請求,
後者飽受 同源政策 之苦,使用上諸多限制,相當麻煩。
本篇將介紹幾個實用 HTTP Client !
Node.js
Node.js 是開源、跨平台、基於 Chrome’s V8 JavaScript engine (C++) 的 JavaScript 執行環境,
Node.js 使用 事件驅動 (event-driven)、非阻塞 I/O 模型 (non-blocking I/O model),
使其輕量的同時,擁有高效能。
Node 的出現打破 JavaScript = 客戶端腳本 的觀念 (另有 Nashorn),
其旨在構建可擴展的網絡應用程序,並提供一系列強大的 基本模組,
能擺脫 Apache、Nginx 或 IIS…等,做為獨立伺服器執行。
以 Node.js 對 https://reqres.in/api/register,
送出 POST 請求,註冊新使用者為例:
(https://reqres.in/ 是一測試用 API)
安裝
首先,得至 官網 安裝 Node.js 與其 套件管理器 npm。
接著,以我愛用的 request 套件為例:
Windows 系統
打開開始選單中的 Node.js command prompt,並輸入 :
:: 建立資料夾 NodeRequestDemo
:: 若命令無效,則自行替換 %HOMEPATH%\Desktop 路徑
mkdir %HOMEPATH%\Desktop\NodeRequestDemo
:: 移動至該資料夾
cd %HOMEPATH%\Desktop\NodeRequestDemo
:: 安裝 request
npm install request
UNIX 系統
打開終端機,輸入:
# 建立資料夾 NodeRequestDemo
mkdir ~/Desktop/NodeRequestDemo
^mkdir^cd
# 安裝 request
npm install request
安裝完成 !
長這樣的警告可暫時忽略:
Coding
進入 NodeRequestDemo 資料夾,建立文字檔 index.js (隨便取),
並輸入以下內容:
var request = require('request');
request.post({
url: 'https://reqres.in/api/register',
form: {
email: 'jason@gg',
password: '9487'
}
},
function (err, response, body) {
console.log('error:', err); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the ReqRes homepage.
});
意指 目標 URI: https://reqres.in/api/register
表單資料: email 與 password。
存擋後,執行指令
node index.js
即可成功新增使用者,並獲取 token !
詳盡的 request 用法,詳見 官網,
Node.js 的基本教學,可參考 w3schools。
Postman
然而,Node.js 與 request 多用於開發層面,
每次測試都要撰寫程式碼,還是非常麻煩的,
Postman 提供漂亮的 圖形化介面 (GUI),
藉由簡單的選擇,即可送出請求訊息 !
重點是 免費 !
重點是 免費 !
重點是 免費 !
可直接前往 官網 下載。
使用範例
同樣的,以 Postman 對 https://reqres.in/api/register,
送出 POST 請求,註冊新使用者為例:
選擇 請求方法 POST,並填寫資料酬載後 送出 :
Code
儘管如此,這並非我常用的功能,
因為 Postman 太 “漂亮” 了,讓我久久無法接受,
反而時常以功能相近的 Paw 代替。
(其實是當初犯傻了,花 1500 買它…)
Postman 的 殺手級功能 — — Tests 與 Code 才是讓我愛不釋手的原因,
透過 Code 功能,可以直接 匯出 許多語言的 程式碼 !
(包含 上述的 Node.js 以及 XHR、jQuery)
僅需再對結果做微調,即可避免打這些千篇一律的程式碼
除此之外,Postman 還能保存、組織測試內容…,
真的超方便 😭,誠心推薦 !
Insomnia
Postman 雖然好用,個人還是下 cURL 指令居多,
因為真的太 “漂亮” 了…讓我看得很煩 😵,
然而,Insomnia 的出現,讓我又跳回懶人 GUI 世界 😂。
重點也是 免費 !
重點也是 免費 !
重點也是 免費 !
可直接前往 官網 下載。
使用範例
同樣的,以 Insomnia 對 https://reqres.in/api/register,
送出 POST 請求,註冊新使用者為例:
選擇 請求方法 POST,並填寫資料酬載後 送出 :
OH! 這 UI 是如此乾淨俐落…🤤
Code
Insomnia 同樣能 匯出程式碼 !
這幾乎是現代 HTTP Client 的基本功能了 😯。
(雖然 Paw 也有,但實在好貴…😱)
選擇左方請求的下拉選項 -> Generate Code :
圖中的 cURL 是我慣用的終端機指令,
詳細用法可參閱 man page,
或以 Postman、Insomnia 的 Code 功能匯出!
若不用 cmd-line 的話,Insomnia 是我目前的首選 !
經濟能力允許的話,也能升級 付費版 喔 !
HTTP Prompt
最後,要大推 PTT 神人 eliang 所寫的,
建構在 HTTPie 和 prompt_toolkit 上的 互動式命令列 HTTP Client — — http-prompt
具有自動補完 和 語法高亮功能 !
詳情請見 PTT。