使用 Node.js 编写接受 POST 请求的服务器

在前端开发中,我们经常需要与服务器进行数据交互。而其中一种最常用的方式就是通过 HTTP 协议发送 POST 请求。在 Node.js 中,我们可以使用 http 模块来编写一个简单的服务器,用于接收和处理这些请求。

创建服务器

首先,我们需要创建一个 Node.js 项目,并安装 http 模块。可以通过以下命令完成:

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

接下来,在项目根目录下创建一个 server.js 文件,并在其中引入 http 模块:

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

然后,我们可以使用 http.createServer() 方法来创建一个服务器实例,并监听指定的端口:

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

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

现在,我们已经成功创建了一个监听端口为 3000 的服务器!但是,该服务器并没有任何功能,无法接受和处理请求。接下来,我们将添加代码来实现这些功能。

处理 POST 请求

要处理 POST 请求,我们需要从请求中获取提交的数据,并对其进行解析和处理。在 Node.js 中,我们可以使用 req 对象来访问请求信息和数据。而为了更方便地处理 POST 请求,我们可以使用 querystring 模块来解析 POST 数据。

在服务器的回调函数中,我们可以添加以下代码来处理 POST 请求:

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

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

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

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

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

上述代码中,我们首先判断当前请求是否为 POST 请求。如果是,我们就创建一个空字符串 body 来存储 POST 数据,并通过 req.on() 方法监听 dataend 事件。当数据传输完成时,我们使用 qs.parse() 方法将 POST 数据解析为 JavaScript 对象,并进行进一步处理。

比如,我们可以将解析后的数据输出到控制台上:

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

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

这样,每次提交 POST 请求时,我们都能够看到解析后的数据。

启用 CORS

最后,为了让服务器能够接受来自其他域的请求,我们需要启用跨域资源共享(CORS)。在 Node.js 中,可以使用 cors 模块来实现这个功能。可以通过以下命令安装该模块:

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

然后,在服务器的回调函数中添加以下代码即可启用 CORS:

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

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

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

示例代码

最终,我们的 server.js 文件应该如下所示:

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

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

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

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

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

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

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

该服务器能够接受来自

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