Node.js 中如何使用 HTTP 模块发送请求

HTTP 是在互联网上发起请求和接收响应的协议。Node.js 中,HTTP 模块提供了一些功能,使您能够以编程方式发送和接收 HTTP 请求。

发送 HTTP 请求

要发送 HTTP 请求,您需要创建一个客户端,并使用 .request() 方法发出请求。.request() 方法的语法如下:

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

其中,options 是一个对象,它包含以下参数:

  • host:请求的目标主机的域名或 IP 地址。

  • port:目标主机的端口号。

  • path:请求的路径。默认值是 /

  • method:HTTP 请求的方法。例如,GETPOST 等。默认值是 GET

  • headers:HTTP 请求的头信息。默认值是一个空对象。

callback 是一个回调函数,当请求完成后将被调用。

以下是一个简单的例子:

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

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

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

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

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

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

----------

在这个例子中,我们向 www.example.com 发送了一个 HTTP GET 请求。

我们首先创建了一个 options 对象,其中包含请求的目标主机和路径。

然后我们调用 http.request() 方法并将 options 传递给它。这会返回一个 http.ClientRequest 对象。

我们监听 ClientRequest 对象的 error 事件,以便在请求遇到问题时打印错误信息。

然后我们调用 req.end(),这标志着我们已经完成了请求,并将请求数据发送到服务器。

最后,我们监听 http.IncomingMessage 对象的 dataend 事件来获取响应数据。

指定 HTTP 请求体

要在 HTTP 请求中添加请求体,请将请求体作为参数传递给 req.write() 方法:

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

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

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

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

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

在这个例子中,我们向 www.example.com 发送了一个 HTTP POST 请求,并将请求体作为参数传递给 req.write() 方法。

我们还需要在请求头信息中指定请求体的长度和类型,这样服务器才能正确解析它。

使用 HTTPS 发送请求

要使用 HTTPS 发送请求,您可以使用 https.request() 方法,语法与 http.request() 方法相同:

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

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

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

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

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

----------

在这个例子中,我们使用 https.request() 方法向 www.example.com 发送了一个 HTTPS GET 请求,并监听 http.IncomingMessage 对象的 data 事件以获取响应。

超时处理

Node.js 的 HTTP 客户端提供了处理超时的选项。您可以使用 req.setTimeout() 方法来指定超时时间(以毫秒为单位)。

以下是一个例子:

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

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

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

----------

在这个例子中,我们使用了 socket.setTimeout() 方法来设置超时时间为 1 秒钟。当超过超时时间时,我们调用 req.abort() 方法中止请求。

结论

HTTP 是互联网上最基本的协议之一。Node.js 提供了一些功能,使您能够以编程方式发送和接收 HTTP 请求,包括 HTTPS。

在编写 Node.js 应用程序时,使用 HTTP 客户端发送请求是一项重要的技能。掌握这个技能可以让您编写更加高效和安全的应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67399651d4ed1d74d41296a6