首頁 > web前端 > js教程 > 主體

使用 Got 在 Node.js 中發出 HTTP 請求

WBOY
發布: 2024-08-28 06:06:02
原創
474 人瀏覽過

在 Node.js 中建立應用程式時,無論您是與外部 API 互動、獲取資料還是在服務之間通信,發出 HTTP 請求都是一項基本任務。雖然 Node.js 具有用於發出請求的內建 http 模組,但它並不是最用戶友好或功能豐富的解決方案。這就是像 Got 這樣的圖書館的用武之地。

Got 是一個輕量級、功能豐富且基於 Promise 的 Node.js HTTP 用戶端。它簡化了發出 HTTP 請求的過程,提供了乾淨的 API、自動重試、對流的支援等等。在本文中,我們將探討如何使用 Got 來發出 HTTP 請求和處理錯誤。

為什麼選擇 Got 來處理 HTTP 請求?

在深入研究程式碼之前,了解為什麼 Got 是許多開發人員的首選非常重要:

  • 簡單的 API:Got 提供了一個乾淨直覺的 API,可以輕鬆執行各種類型的 HTTP 要求。
  • 基於 Promise: Got 完全基於 Promise,讓您可以使用 async/await 語法來獲得更清晰、更易讀的程式碼。
  • 自動重試:Got 可以在網路故障或其他問題時自動重試請求,這對於提高應用程式的可靠性特別有用。
  • 對流的支援:支援流,這對於下載大檔案或處理區塊資料非常有用。
  • 可自訂: Got 是高度可自訂的,提供修改標頭、查詢參數、超時等選項。

安裝Got

要開始使用 Got,您首先需要將其安裝到 Node.js 專案中。如果您尚未設定 Node.js 項目,請依照下列步驟操作:

  1. 初始化您的專案:開啟終端機並為您的專案建立新目錄:
   mkdir got-http-requests
   cd got-http-requests
   npm init -y
登入後複製

此指令建立一個新的專案目錄並使用 package.json 檔案對其進行初始化。

  1. 安裝 Got: 接下來,使用 npm 安裝 Got:
   npm install got
登入後複製

Got 現在已新增至您的專案中,您可以開始使用它來發出 HTTP 請求。

使用 Got 發出 HTTP 請求

Got 可以輕鬆執行各種類型的 HTTP 請求。讓我們來看看一些常見的用例。

1. 發出基本的 GET 請求

GET 請求是最常見的 HTTP 請求類型,通常用於從伺服器檢索資料。使用 Got,發出 GET 請求非常簡單:

const got = require('got');

(async () => {
    try {
        const response = await got('https://jsonplaceholder.typicode.com/posts/1');
        console.log('GET Request:');
        console.log(response.body);
    } catch (error) {
        console.error('Error in GET request:', error.message);
    }
})();
登入後複製
  • 說明:
  • 端點: https://jsonplaceholder.typicode.com/posts/1 是一個測試 API,傳回 ID 為 1 的貼文的詳細資料。
  • Got 語法: got(url) 函數向指定的 URL 發送 GET 請求。回應被當作承諾處理,允許我們使用await來等待回應。
  • 回應: 回應正文將記錄到控制台,其中將包含貼文的 JSON 資料。

2. 發出 POST 請求

POST 請求用於將資料傳送到伺服器,通常用於建立新資源。使用 Got,您可以輕鬆地在 POST 請求中發送 JSON 資料:

const got = require('got');

(async () => {
    try {
        const response = await got.post('https://jsonplaceholder.typicode.com/posts', {
            json: {
                title: 'foo',
                body: 'bar',
                userId: 1
            },
            responseType: 'json'
        });
        console.log('POST Request:');
        console.log(response.body);
    } catch (error) {
        console.error('Error in POST request:', error.message);
    }
})();
登入後複製
  • 說明:
  • 端點: https://jsonplaceholder.typicode.com/posts 用於在伺服器上建立新貼文。
  • JSON 資料: Got 請求中的 json 選項可讓您指定要傳送的資料。在這裡,我們將發送一篇帶有標題、正文和用戶 ID 的新文章。
  • 回應: 伺服器的回應(包括與新 ID 一起傳送的資料)將記錄到控制台。

3. 處理錯誤

HTTP 請求期間可能會出現網路問題或伺服器錯誤。 Got 提供了一種簡單的方法來處理這些錯誤:

const got = require('got');

(async () => {
    try {
        const response = await got('https://nonexistent-url.com');
        console.log(response.body);
    } catch (error) {
        console.error('Error handling example:', error.message);
    }
})();
登入後複製
  • 說明:
  • 不存在的 URL: 此範例嘗試向不存在的 URL 發出 GET 請求。
  • 錯誤處理:當請求失敗時,Got會自動拋出錯誤。 catch 區塊捕獲此錯誤並將錯誤訊息記錄到控制台。

Got 的進階功能

Got 不僅僅是發出簡單的 GET 和 POST 請求。它配備了多項高級功能,可以幫助您處理更複雜的場景。

1. 自訂請求選項

Got 允許您透過設定標頭、查詢參數、逾時等來自訂請求:

const got = require('got');

(async () => {
    try {
        const response = await got('https://jsonplaceholder.typicode.com/posts/1', {
            headers: {
                'User-Agent': 'My-Custom-Agent'
            },
            searchParams: {
                userId: 1
            },
            timeout: 5000
        });
        console.log('Customized Request:');
        console.log(response.body);
    } catch (error) {
        console.error('Error in customized request:', error.message);
    }
})();
登入後複製
  • Explanation:
  • Headers: You can set custom headers using the headers option. Here, we set a custom User-Agent.
  • Query Parameters: The searchParams option allows you to add query parameters to the URL.
  • Timeout: The timeout option sets the maximum time (in milliseconds) the request can take before throwing an error.

2. Streaming with Got

Got supports streaming, which is useful for handling large data or working with files:

const fs = require('fs');
const got = require('got');

(async () => {
    const downloadStream = got.stream('https://via.placeholder.com/150');
    const fileWriterStream = fs.createWriteStream('downloaded_image.png');

    downloadStream.pipe(fileWriterStream);

    fileWriterStream.on('finish', () => {
        console.log('Image downloaded successfully.');
    });
})();
登入後複製
  • Explanation:
  • Streaming: The got.stream(url) function initiates a streaming GET request. The data is piped directly to a writable stream, such as a file.
  • File Writing: The fs.createWriteStream() function is used to write the streamed data to a file.

Making HTTP Requests in Node.js with Got

Download the source code here.

Conclusion

Got is a versatile and powerful library for making HTTP requests in Node.js. It simplifies the process of interacting with web services by providing a clean and intuitive API, while also offering advanced features like error handling, timeouts, and streams. Whether you’re building a simple script or a complex application, Got is an excellent choice for handling HTTP requests.

By using Got, you can write cleaner, more maintainable code and take advantage of its robust feature set to meet the needs of your application. So the next time you need to make an HTTP request in Node.js, consider using Got for a hassle-free experience.

Thanks for reading…

Happy Coding!

The post Making HTTP Requests in Node.js with Got first appeared on Innovate With Folasayo.

The post Making HTTP Requests in Node.js with Got appeared first on Innovate With Folasayo.

以上是使用 Got 在 Node.js 中發出 HTTP 請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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