HTTP

發送 HTTP 請求 (Node.js、Postman、Insomnia 與 HTTP Prompt)

請求訊息發送者,別名為 — — 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.jshttps://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),
藉由簡單的選擇,即可送出請求訊息 !
重點是 免費 !
重點是 免費 !
重點是 免費 !
 
可直接前往 官網 下載。
 

 
 

使用範例

同樣的,以 Postmanhttps://reqres.in/api/register
送出 POST 請求,註冊新使用者為例:
 
選擇 請求方法 POST,並填寫資料酬載後 送出 :
 

 
 

Code

儘管如此,這並非我常用的功能,
因為 Postman 太 “漂亮” 了,讓我久久無法接受,
反而時常以功能相近的 Paw 代替。
(其實是當初犯傻了,花 1500 買它…)
 
Postman 的 殺手級功能 — — Tests 與 Code 才是讓我愛不釋手的原因,
透過 Code 功能,可以直接 匯出 許多語言的 程式碼 !
(包含 上述的 Node.js 以及 XHR、jQuery)
 

 
僅需再對結果做微調,即可避免打這些千篇一律的程式碼
除此之外,Postman 還能保存、組織測試內容…,
真的超方便 😭,誠心推薦 !
 


 

Insomnia

Postman 雖然好用,個人還是下 cURL 指令居多,
因為真的太 “漂亮” 了…讓我看得很煩 😵,
然而,Insomnia 的出現,讓我又跳回懶人 GUI 世界 😂。
 
重點也是 免費 !
重點也是 免費 !
重點也是 免費 !
 
可直接前往 官網 下載。
 

 
 

使用範例

同樣的,以 Insomniahttps://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
 
 

作者: 鄭中勝
喜愛音樂,但不知為何總在打程式 ? 期許能重新審視、整理自身所學,幫助有需要的人。

發表迴響