nodejs 請求封裝藉口

WBOY
發布: 2023-05-11 13:07:38
原創
699 人瀏覽過

隨著前後端分離的流行,前端工程師越來越需要與後端進行介面通訊。在這個過程中,許多工程師發現,直接使用原生的 XMLHttpRequest 或 fetch 進行網路請求會存在許多問題。因此,現在很多前端團隊都會使用第三方的請求庫來進行介面請求。其中,Node.js 開發的 request 請求函式庫也是非常受歡迎的。

在本文中,將介紹如何使用 Node.js 的 request 請求庫進行介面請求封裝,讓前端工程師在進行介面通訊時更加方便快速。

安裝 Request 函式庫

在使用 Request 函式庫之前,需要先安裝它。可以在命令列中使用 npm 指令進行安裝:

npm install request --save
登入後複製

發送 GET 請求

接下來,我們將使用 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 請求

接下來我們來傳送一個 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 資料。以下是一個傳送 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 參數配置了該請求的一些參數:

  • method 表示請求方法,這裡我們設定為 POST。
  • url 表示請求位址,同樣是 https://httpbin.org/post。
  • json 表示我們要傳送的是 JSON 格式的資料。
  • body 則是我們要傳送的具體資料。

在 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() 函數。它包含三個參數:

  • url 表示請求的位址。
  • method 表示請求的方法。
  • data 表示請求的資料。

在函數中,我們定義了 options 對象,用來儲存請求的一些設定參數。根據不同的請求方法,我們設定 options.method 的值以及 options.body 的值。

然後,我們使用 Promise 來進行非同步處理。在 request() 方法的回呼函數中,我們使用 resolve() 來傳遞回應內容,使用 reject() 來傳遞錯誤訊息和狀態碼。使用 Promise 物件的 then() 和 catch() 方法,我們可以在請求到資料之後進行對應的處理。

小結

使用 Node.js 的 Request 函式庫進行介面請求是一種非常方便快速的方式。它可以避免直接使用原生的 XMLHttpRequest 或 fetch 所導致的一些問題,同時也可以進行一些常見的錯誤處理。我們可以根據實際的需求,將常見的請求封裝成函數,在專案中進行調用,使程式碼更加簡潔易懂。

以上是nodejs 請求封裝藉口的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!