Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境,使用它可以輕鬆建立高效能、可擴展的網路應用程式。其中, request 模組是 Node.js 中一個非常常用的網路請求模組,它可以讓我們在 Node.js 中傳送 HTTP/HTTPS 請求。本文將介紹 request 模組的使用方法以及如何處理請求傳回的資料。
一、安裝 request 模組
在使用 request 模組之前,需要先安裝 request 模組。在控制台中輸入以下命令:
$ npm install request --save
這會將 request 模組安裝到你的專案中,並將其新增至 package.json 檔案中。
二、發送 GET 請求
發送 GET 請求非常容易,只需要使用 request 模組的 request 方法。以下是一個簡單的範例:
const request = require('request'); request('https://api.github.com/users/octocat', (error, response, body) => { console.log('statusCode:', response && response.statusCode); console.log('body:', body); });
這個範例將會傳送一個 GET 請求到 GitHub 的使用者 API,查詢使用者名為 octocat 的使用者資訊。發送請求的方式非常簡單,只需要呼叫 request 方法,並傳入請求的 URL 即可。
回呼函數的參數分別為 error, response 和 body。其中,error 表示請求錯誤;response 表示回應對象,其中包含了回應頭和回應碼等資訊;body 表示回應體,也就是 API 傳回的資料。
三、發送 POST 請求
發送 POST 請求同樣非常容易,只需要將 request 方法的第二個參數(即 options)設定為具體的請求資訊。以下是一個使用POST 方法為GitHub API 增加一個名為test 的repo 的例子:
const request = require('request'); const options = { url: 'https://api.github.com/user/repos', headers: { 'User-Agent': 'request' }, json: true, body: { name: 'test' }, auth: { 'user': 'username', 'pass': 'password' } }; request.post(options, (error, response, body) => { console.log('statusCode:', response && response.statusCode); console.log('body:', body); });
在這個例子中,我們設定了url 為https://api.github.com/user/repos,也就是GitHub 的創建倉庫的API。 headers 則包含了 User-Agent,表示該請求是由 request 發送的。 body 是我們要傳送的數據,也就是我們要在 GitHub 上建立的 repo 名稱,json 設為 true 則表示傳送的資料是 JSON 格式。 auth 則表示需要進行身份驗證,包含使用者名稱和密碼。
四、處理回應資料
在發送請求之後,我們需要處理回應資料。對於 JSON 格式的數據,可以直接解析為 JavaScript 物件。以下是一個將GitHub API 傳回的JSON 資料解析為JavaScript 物件的範例:
const request = require('request'); request('https://api.github.com/users/octocat', {json: true}, (error, response, body) => { console.log('statusCode:', response && response.statusCode); console.log('login:', body.login); console.log('name:', body.name); });
在這個範例中,我們將options 中的json 設為true,表示接收回應資料時自動解析為JSON 字串並轉換為JavaScript 物件。在回呼函數中,我們可以直接存取響應體中的 login 和 name 屬性。
對於其他格式的數據,我們可以使用對應的解析庫進行解析。例如,對於 HTML 格式的數據,可以使用 cheerio 函式庫進行解析。以下是一個使用 cheerio 解析百度搜尋結果的範例:
const request = require('request'); const cheerio = require('cheerio'); request('https://www.baidu.com/s?wd=nodejs', (error, response, body) => { const $ = cheerio.load(body); $('h3.t a').each((i, el) => { console.log($(el).text()); console.log($(el).attr('href')); }); });
在這個範例中,我們透過 request 請求了百度搜尋關鍵字 nodejs 的結果。使用 cheerio 的 load 方法可以將 HTML 資料轉換為可操作的 DOM 物件。接著,我們透過選擇器選擇 h3.t a 元素,並循環遍歷每一個元素。在循環內部,我們使用 $() 包裝元素,可以輕鬆取得元素的文字和 href 屬性值。
五、總結
以上就是使用 Node.js 的 request 模組傳送 HTTP/HTTPS 請求的基本方法。透過這個模組,我們可以輕鬆地發送 GET、POST 等請求,並處理請求返回的資料。儘管這個模組非常方便,但在使用時需要格外注意安全性,特別是在發送 POST 請求時,需要對請求參數進行加密處理。
以上是nodejs request請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!