Express.js 中的路由是如何工作的

在使用 Express.js 搭建 Web 应用的过程中,路由是非常重要的组成部分。它指定了 Web 应用中不同 URL 地址对应的代码逻辑,以便服务器能对不同的请求做出正确的响应。本文将详细介绍 Express.js 中的路由是如何工作的,并提供指导性的学习和示例代码。

基本概念

在 Express.js 中,一个路由是由一个 HTTP 方法和一个 URL 地址组成的。例如,以下是一个基本路由的声明:

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

在这个例子中,app.get 方法指定了一个 HTTP GET 请求和 URL 地址,这个 URL 地址是根路由 /。当一个 HTTP GET 请求匹配到这个路由时,一个回调函数将被执行。这个回调函数包含两个参数:请求对象 req 和响应对象 res。在这个例子中,回调函数通过 res.send 方法将 Hello, world! 这个字符串作为响应返回到客户端。

不仅如此,我们还可以使用 app.postapp.putapp.delete 等方法来创建其他类型的路由。例如,以下代码演示了如何创建一个处理 POST 请求的路由:

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

在这个例子中,app.post 方法指定了一个 HTTP POST 请求和 URL 地址 /users。当一个 HTTP POST 请求匹配到这个路由时,回调函数将会被执行,并且通过 res.send 方法将一个字符串作为响应返回到客户端。

路由参数

除了基本的路由外,Express.js 还支持路由参数,它可以用来捕捉 URL 中的特定部分。例如,以下是一个带有路由参数的路由声明:

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

在这个例子中,我们使用 :userId 来声明一个路由参数,表示任何以 /users/ 开头并且后面紧跟着一个字符串的 URL 地址都能匹配到这个路由。例如,/users/123/users/hello 都是有效的匹配。

当一个请求匹配到这个路由时,路由参数的值将会被解析到请求对象的 params 属性中。在这个例子中,我们使用 req.params.userId 来获取路由参数的值,并使用它来产生响应。

路由中间件

除了可以在路由中定义回调函数外,还可以把一系列中间件函数串联到一起来处理 HTTP 请求。这样做的好处在于让代码更加模块化,易于维护。例如,以下是一个使用路由中间件的例子:

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

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

在这个例子中,我们使用一个名为 logRequest 的中间件函数来打印出每一个 HTTP 请求的日志。中间件函数接收三个参数:请求对象 req、响应对象 res、以及一个表示下一个中间件函数的参数 next。每当一个请求到达这个路由时,会按照 logRequest、路由回调函数的顺序调用中间件函数。在中间件函数的最后,使用 next() 方法来调用下一个中间件函数。

总结

本文介绍了 Express.js 中的路由是如何工作的,包括了路由基本概念、路由参数和路由中间件。路由是架构 Web 应用的重要组成部分,了解它的工作原理和使用方法对提高应用的性能、可维护性和可扩展性都非常重要。

示例代码:

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

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

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

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

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

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

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6647f4c4d3423812e467ddfc


猜你喜欢

  • 如何用 SASS 编写模块化的 CSS 代码

    在前端开发的过程中,CSS 是必不可少的组成部分。然而,当我们的项目变得越来越庞大时, CSS 代码也变得越来越难以维护。此时,SASS 就是一个非常好的选择。 SASS 是一种 CSS 预处理器,它...

    5 个月前
  • 在 TypeScript 中使用 ES6 Promise 对象

    在 TypeScript 中使用 ES6 Promise 对象 Promise 对象是 ES6 中的特性,用于异步编程。它是一个容器,保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

    5 个月前
  • 无障碍性的 Web 设计教程

    无障碍性的 Web 设计教程 随着互联网的快速发展,Web 设计越来越受到人们的关注。但是,我们往往会忽略一个重要的问题:无障碍性。无障碍性是指能够让所有人都能够访问和使用 Web 网站,包括那些有视...

    5 个月前
  • Kotlin 性能优化:提升 Kotlin 代码的运行速度

    Kotlin 是一门目前较为流行的编程语言,它的运行速度在许多场景下都比 Java 更为快速。但同时,我们也应该意识到,在实际的项目开发中,优化 Kotlin 代码的性能是非常重要的,它可以帮助我们提...

    5 个月前
  • 如何在 Express.js 中扩展控制器

    在 Express.js 中,控制器是处理和应答 HTTP 请求的逻辑部分。在实际应用开发中,控制器往往需要处理多个请求路径,并实现复杂的数据处理和逻辑判断。在这种情况下,针对不同的请求路径,你可能需...

    5 个月前
  • 解决使用 CSS Flexbox 布局时出现的重叠问题

    在前端开发中,CSS Flexbox 布局已经成为了常用的布局方式之一。然而,使用 Flexbox 布局时经常会出现元素重叠的问题,给我们带来了很大的困扰和挑战。本文将介绍使用 CSS Flexbox...

    5 个月前
  • 前端开发中常见的 PWA 坑点与修复

    什么是 PWA? PWA 的全称是 Progressive Web App,即渐进式 Web 应用,是一种基于 Web 技术的新型应用类型,它通过现代化 Web 技术和能力,增强 Web 应用的功能和...

    5 个月前
  • 实现 Fastify 项目中的 Redis 缓存

    概述 在 Web 应用的开发中,缓存是常用的技术之一,可以有效的减轻数据库等后端资源的压力,提升系统的访问效率。Redis 是一款高性能的键值存储数据库,可以作为缓存工具的首选,因为它在内存中存储数据...

    5 个月前
  • 如何使用 Headless CMS 管理 OAuth2 代币

    随着前端技术的发展,越来越多的网站需要实现用户认证和授权功能。OAuth2 是一种流行的授权协议,可以让用户通过授权码或令牌等方式实现安全的访问资源。但是,OAuth2 代币的管理和更新是一个比较繁琐...

    5 个月前
  • 了解 ECMAScript 新特性:数组新增方法与操作符 plusinc

    最近几年,前端开发变得越来越重要,而 JavaScript 这门语言也开始变得越来越流行。ECMAScript(以下简称 ES)是 JavaScript 的标准化规范,每一次的更新都会带来许多新的特性...

    5 个月前
  • 如何使用 CSS Reset 优化企业网站

    在开发企业网站时,我们常常需要处理各种浏览器的兼容性问题。CSS Reset 是一种常见的解决方案,它可以消除浏览器的默认样式,并以同一的基础样式为基础,使得页面在不同浏览器中的渲染结果更加一致。

    5 个月前
  • 那个让你异想天开的 Web Components

    Web Components 是一个新兴的技术,它让我们可以创建自定义的 HTML 元素,并将其作为标准的 Web 组件使用。这个技术的目标是提供一种简单的方式来编写可重用的组件,使得 Web 开发更...

    5 个月前
  • CSS Grid 实现折叠式布局的方法

    在页面布局设计中,折叠式布局是一种常见的设计方式,可以在有限的空间中展示更多的内容。传统的实现方式是使用 JavaScript 或者 CSS 动画来实现,但是这些方法需要额外的代码和处理,对性能和用户...

    5 个月前
  • RESTful API 中的 JSON Web Token(JWT)认证与授权

    什么是 JWT JWT(JSON Web Token)是由 JSON 组成的开放标准(RFC 7519),用于在各方之间传递安全可靠的信息。一个 JWT 由三部分组成:Header(头部)、Paylo...

    5 个月前
  • LESS 中如何使用 calc() 计算多个变量?

    LESS 中如何使用 calc() 计算多个变量? 在前端开发中,样式是一个非常重要的部分。如果我们要更好地管理和处理样式,我们需要使用一种预编译CSS的语言来编写CSS文件。

    5 个月前
  • AngularJS 中常见的数据操作和运算

    AngularJS 是一款十分强大的前端开发框架,它提供了丰富而灵活的数据操作和运算方法,帮助我们快速实现复杂的前端交互效果。本文将介绍 AngularJS 中常用的数据操作和运算,包括数组操作、字符...

    5 个月前
  • 如何在 Koa 中使用 WebSocket 进行通信

    WebSocket 是基于HTTP协议之上的一种全双工的通信协议,它可以在客户端和服务端之间进行实时数据传输。在前端领域中,WebSocket 已经被广泛应用于实时聊天、游戏、股票行情等实时数据的传输...

    5 个月前
  • RxJS 中的 timer 操作符使用实例

    RxJS 是一个流式编程库,它为处理异步操作提供了一种优雅的解决方案。timer 操作符是 RxJS 中的一个非常有用的操作符,它可以用来创建一个定时器。 本文将介绍 RxJS 中的 timer 操作...

    5 个月前
  • Sequelize Op.and 使用

    在 Sequelize 中,Op.and 是一个非常实用的操作符。如果你需要在查询中使用多个条件,而不仅仅是一个条件,你可以使用 Op.and 操作符。本篇文章将向你展示如何使用 Sequelize ...

    5 个月前
  • Webpack 如何实现代码分离和懒加载

    在前端开发中,我们经常面临一个问题,如何处理大型项目中的代码管理和代码性能优化。Webpack 是一个非常流行的前端打包工具,它可以帮助我们解决这些问题。在本文中,我们将介绍如何使用 Webpack ...

    5 个月前

相关推荐

    暂无文章