Node.js 中使用 request 库发送 HTTP 请求

阅读时长 11 分钟读完

在 Node.js 中,我们经常需要向外部服务发起 HTTP 请求来获取数据或者将数据发送到指定的 URL 上。request 库是 Node.js 中最常用的 HTTP 请求库之一,其具有使用方便、功能强大、可扩展性强等特点,被广泛应用于构建 Web 应用、爬虫等场景。

本篇文章将为大家详细介绍 Node.js 中如何使用 request 库发送 HTTP 请求,以及一些常见的实际应用场景。

安装 request

在开始之前,我们需要先安装 request 库,可以通过 npm 进行安装。

安装完毕后,我们就可以在项目中使用 request 库了。

发送 HTTP 请求

request 库支持多种 HTTP 请求类型,包括 GET、POST、PUT、DELETE 等。我们可以通过不同的方法来发送这些不同类型的请求。

发送 GET 请求

发送 GET 请求最简单的方法是使用 request.get 方法,该方法接收两个参数:请求 URL 和回调函数。回调函数将在请求返回时被调用,其中第一个参数是可能的错误对象,第二个参数是带有请求结果的响应对象。

-- -------------------- ---- -------
----- ------- - -------------------

------------------------------------- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

除了使用 request.get 方法外,我们还可以使用链式调用的方式构建请求对象。下面的示例展示了如何使用链式调用发送 GET 请求。

-- -------------------- ---- -------
----- ------- - -------------------

-------
  ------------------------------
  --------------- -------- ---------- -
    --------------------- ---------------------
    ------------------- ----------------------------------
  --
  ------------ -------- ------- -
    ---------------------- -------
  ---

发送 POST 请求

发送 POST 请求也很简单,只需要使用 request.post 方法即可。该方法接收三个参数:请求 URL、请求数据和回调函数。其中请求数据可以是 JSON 对象或者字符串,也可以是一个可读流。

-- -------------------- ---- -------
----- ------- - -------------------

----- ---- - -
  ---- ------
  ---- -----
--

--------------
  ---- -------------------------
  ----- ----
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

类似 GET 请求,我们也可以使用链式调用的方式发送 POST 请求。下面的示例展示了如何使用链式调用发送 POST 请求。

-- -------------------- ---- -------
----- ------- - -------------------
----- -- - --------------

----- ---- - -
  ---- ------
  ---- -----
--

-------
  ------------------------------- - ----- ---- --
  --------------- -------- ---------- -
    --------------------- ---------------------
    ------------------- ----------------------------------
  --
  ------------ -------- ------- -
    ---------------------- -------
  --
  --------------------------------------------

发送 PUT 请求

发送 PUT 请求同样很简单,只需要使用 request.put 方法即可。该方法接收三个参数:请求 URL、请求数据和回调函数。其中请求数据可以是 JSON 对象或者字符串,也可以是一个可读流。

-- -------------------- ---- -------
----- ------- - -------------------

----- ---- - -
  ---- ------
  ---- -----
--

-------------
  ---- -------------------------
  ----- ----
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

发送 DELETE 请求

发送 DELETE 请求同样很简单,只需要使用 request.delete 方法即可。该方法接收两个参数:请求 URL 和回调函数。

-- -------------------- ---- -------
----- ------- - -------------------

---------------------------------------- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

除了上述四种方法以外,request 库还提供了其他一些方法,例如 request.headrequest.patch 等,可以根据自己的需求选择使用。

Request 配置

request 库具有丰富的配置选项,通过这些配置选项,我们可以自定义请求的一些参数,满足不同的需求。

设置请求头

可以通过配置 headers 来设置请求头信息,其中 key 是头信息的键名,value 是键值。

-- -------------------- ---- -------
----- ------- - -------------------

----- ------- - -
  ------------- ------------ ------------ ---- ---- ------- -- ------
  --------------- ------------------
--

--------------
  ---- -------------------------
  -------- --------
  ----- -----
  ----- -
    ---- ------
    ---- -----
  -
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

设置请求超时时间

可以通过配置 timeout 来设置请求超时时间(单位为毫秒)。

-- -------------------- ---- -------
----- ------- - -------------------

-------------
  ---- -------------------------
  -------- ----
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

设置代理

可以通过配置 proxy 来设置代理服务器的地址和端口号,以便请求能够通过代理服务器进行访问。

-- -------------------- ---- -------
----- ------- - -------------------

-------------
  ---- -------------------------
  ------ -----------------------
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

设置认证信息

可以通过配置 auth 来设置 HTTP 基本认证信息,其中 user 是用户名,pass 是密码。

-- -------------------- ---- -------
----- ------- - -------------------

-------------
  ---- -------------------------
  ----- -
    ----- -------
    ----- -----
  -
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

实际应用

爬取网页内容

通过 request 库,我们可以方便地爬取其他网站的内容。下面的示例展示了如何使用 request 库爬取某个网站的首页内容,以及如何使用 cheerio 库来解析 HTML。

-- -------------------- ---- -------
----- ------- - -------------------
----- ------- - -------------------

------------------------------------- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    ----- - - -------------------

    -------------------- -- -
      ----------------------------------
    ---
  -
---

调用 RESTful API

通过 request 库,我们可以方便地调用 RESTful API。下面的示例展示了如何调用某个 API 并获取其返回的数据。

-- -------------------- ---- -------
----- ------- - -------------------

---------------------------------------------- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    ----- ---- - -----------------

    ------------------- ---------------
    ------------------ ------------
  -
---

上传文件

通过 request 库,我们可以方便地上传文件。下面的示例展示了如何上传文件并获取其返回的信息。

-- -------------------- ---- -------
----- ------- - -------------------

----- -------- - -
  ----- -
    ------ -------------------------------------
    -------- -
      --------- -----------
      ------------ ------------
    -
  -
--

--------------
  ---- --------------------------------
  --------- --------
-- -------- ------- --------- ----- -
  -- ------- -
    ---------------------- -------
  - ---- -
    --------------------- ---------------------
    -------------------- ------
  -
---

总结

本篇文章详细介绍了在 Node.js 中使用 request 库发送 HTTP 请求的方法,并演示了不同类型的请求以及一些常见的配置选项。通过使用 request 库,我们可以方便地调用其他服务或者爬取其他网站的内容,实现各种不同的实际应用场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab46c148841e9894720a6d

纠错
反馈