隨著前後端分離的流行,前端工程師越來越需要與後端進行介面通訊。在這個過程中,許多工程師發現,直接使用原生的 XMLHttpRequest 或 fetch 進行網路請求會存在許多問題。因此,現在很多前端團隊都會使用第三方的請求庫來進行介面請求。其中,Node.js 開發的 request 請求函式庫也是非常受歡迎的。
在本文中,將介紹如何使用 Node.js 的 request 請求庫進行介面請求封裝,讓前端工程師在進行介面通訊時更加方便快速。
在使用 Request 函式庫之前,需要先安裝它。可以在命令列中使用 npm 指令進行安裝:
npm install request --save
接下來,我們將使用 Request 函式庫傳送一些常見的請求。首先,我們需要使用 request.get() 方法來傳送一個 GET 請求。
const request = require('request'); request.get('https://api.github.com/', function(error, response, body) { if (!error && response.statusCode == 200) { console.log(body); } });
在這段程式碼中,我們透過存取 GitHub 的 API,取得了它的主頁內容。首先,我們使用 request.get() 方法傳送了一個 GET 請求,將 GitHub 的 API 位址作為參數傳遞進去。它會將該請求傳送給伺服器,等待伺服器的回應。
當伺服器回應時,Request 函式庫會將回應訊息傳遞到回呼函數中。參數 error 表示請求過程中是否出錯,response 表示伺服器的回應 Header 訊息,body 表示伺服器回應的具體內容。
在這段程式碼中,我們先透過 if (!error && response.statusCode == 200) 來判斷是否有錯誤發生,如果沒有錯誤,則將回應內容列印出來。
接下來我們來傳送一個 POST 請求。
const request = require('request'); request.post({ url: 'https://httpbin.org/post', form: { name: '张三', age: 18 } }, function(error, response, body) { if(!error) { console.log(body); } });
在這段程式碼中,我們透過 request.post() 方法發送了一個 POST 請求,將請求位址和請求參數以物件形式傳遞進去。 form 參數表示 POST 請求的表單數據,在這裡我們傳遞了一個 name 和 age 欄位。
相同的,當伺服器回應時,Request 函式庫會將回應訊息傳遞到回呼函數中,我們同樣可以透過判斷 error 和 response.statusCode 來確認請求是否成功,並列印出回應內容。
在現在的前後端分離開發中,非常常見的一種請求方式是發送 JSON 資料。以下是一個傳送 JSON 資料的範例程式碼:
const request = require('request'); const data = { name: '李四', age: 20 }; const options = { method: 'POST', url: 'https://httpbin.org/post', json: true, body: data }; request(options, function(error, response, body) { if(!error) { console.log(body); } });
在這段程式碼中,我們先定義了一個 data 對象,表示要傳送的 JSON 資料。然後,我們透過 options 參數配置了該請求的一些參數:
在 request() 方法中,我們將 options 參數傳遞進去,和先前的範例程式碼一樣,當伺服器回應時,Request 程式庫會將回應訊息傳遞到回呼函數中。
在進行介面請求的過程中,難免會遇到許多錯誤,例如網路連線逾時、請求位址不存在等等。以下是一個錯誤處理的範例程式碼:
const request = require('request'); const data = { name: '李四', age: 20 }; const options = { method: 'POST', url: 'https://httpbin.org/post', json: true, body: data, timeout: 5000 // 设置请求超时时间 }; request(options, function(error, response, body) { if(error) { console.log('请求发生错误:', error); } else { if(response.statusCode == 200) { console.log('响应内容:', body); } else { console.log('请求失败,状态码:', response.statusCode); } } });
在這段程式碼中,我們首先設定了 options.timeout 參數表示請求的逾時時間,避免請求太久沒有回應導致頁面卡死。如果發生錯誤,我們就在回呼函數中使用 console.log() 輸出錯誤訊息。如果沒有錯誤,則判斷回應狀態碼,如果狀態碼為 200,則將回應內容列印出來。否則,列印請求失敗的狀態碼。
在使用 Request 函式庫進行介面請求時,我們可以將常見的請求方法進行封裝,避免過多的重複程式碼。下面是一個封裝請求介面函數的範例程式碼:
const request = require('request'); function requestApi(url, method, data) { const options = { method: method, url: url, json: true, timeout: 5000 }; if(method == 'GET') { options.method = 'GET'; } else if(method == 'POST') { options.method = 'POST'; options.body = data; } else if(method == 'PUT') { options.method = 'PUT'; options.body = data; } else if(method == 'DELETE') { options.method = 'DELETE'; options.body = data; } return new Promise(function(resolve, reject) { request(options, function(error, response, body) { if(error) { reject(error); } else { if(response.statusCode == 200) { resolve(body); } else { reject(response.statusCode); } } }); }); }
在這段程式碼中,我們先定義了一個 requestApi() 函數。它包含三個參數:
在函數中,我們定義了 options 對象,用來儲存請求的一些設定參數。根據不同的請求方法,我們設定 options.method 的值以及 options.body 的值。
然後,我們使用 Promise 來進行非同步處理。在 request() 方法的回呼函數中,我們使用 resolve() 來傳遞回應內容,使用 reject() 來傳遞錯誤訊息和狀態碼。使用 Promise 物件的 then() 和 catch() 方法,我們可以在請求到資料之後進行對應的處理。
使用 Node.js 的 Request 函式庫進行介面請求是一種非常方便快速的方式。它可以避免直接使用原生的 XMLHttpRequest 或 fetch 所導致的一些問題,同時也可以進行一些常見的錯誤處理。我們可以根據實際的需求,將常見的請求封裝成函數,在專案中進行調用,使程式碼更加簡潔易懂。
以上是nodejs 請求封裝藉口的詳細內容。更多資訊請關注PHP中文網其他相關文章!