Express.js 中的请求和响应对象,你需要知道的一切

Express是一个流行的Node.js框架,它简化了开发Web应用程序的过程。在Express中,请求和响应对象是非常重要的组成部分。请求对象是客户端发出的请求,响应对象则是服务器的响应。在本文中,我们将深入探讨Express中的请求和响应对象,并提供一些示例代码,以帮助您更好地理解。

请求对象

在Express中,所有的请求都会创建一个请求对象。在该对象中,我们可以获取客户端请求的各种信息。下面是一些常用的请求对象方法:

  • req.params:获取URL中的参数;
  • req.query:获取URL中的查询字符串参数;
  • req.body:获取POST请求中的表单数据;
  • req.headers:获取请求头信息;
  • req.cookies:获取请求中的cookie信息;
  • req.method:获取请求方法(GET、POST等);
  • req.path:获取请求路径;
  • req.hostname:获取请求的主机名。

以下是一个获取请求URL参数的示例代码:

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

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

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

通过上面的代码,当访问http://localhost:3000/user/123时,我们将会在控制台输出123

响应对象

响应对象是服务器在收到请求后,向客户端发送的响应。我们可以使用响应对象来设置响应头和响应体。

以下是一些常用的响应对象方法:

  • res.send():发送响应;
  • res.json():以JSON格式发送响应;
  • res.set():设置响应头信息;
  • res.cookie():设置cookie信息;
  • res.status():设置响应状态码。

以下是一个返回JSON格式响应的示例代码:

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

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

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

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

通过上面的代码,我们访问http://localhost:3000/users,则会收到一个JSON格式的响应。

中间件

在Express中,中间件是一个非常关键的概念。中间件类似于过滤器,它可以对请求和响应进行一系列处理。

在Express中,我们可以通过app.use()router.use()来注册中间件。以下是一个简单的中间件示例:

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

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

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

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

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

通过上面的代码,我们访问http://localhost:3000,则控制台将会输出LOGGED

结论

在本文中,我们已经深入了解了Express中的请求和响应对象,以及中间件。这些知识对于Node.js和Express的开发都是至关重要的。我们希望本文能够对初学者有所帮助,并帮助他们更好地理解和使用Express。有关更多详细信息,请查阅Express官方文档。

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