在 Express.js 中,路由是指定应用程序如何响应对特定端点的客户端请求的方式。在本文中,我们将探讨路由的基础知识以及如何使用它在 Express.js 中构建不同的路由。
什么是路由
路由是一种将特定的 HTTP 请求地址(URL)映射到处理该请求的应用程序代码的技术。Express.js 中的路由是指定应用如何响应客户端请求的方式。通常,我们使用 Web 应用程序来捕获 HTTP 请求并执行相应的操作,因此路由告诉我们应如何处理这些请求。例如,我们可以指定当用户请求 URL 时调用特定的函数来响应请求,文本、HTML、JSON 或其他类型的响应。
在 Express.js 中,路由是指定应用程序如何响应对特定端点的客户端请求的方式。路由的结构非常简单,它是由一个 URI(或路径)和一个特定的 HTTP 方法(GET、POST、PUT、DELETE 等)组成。
使用 Express.js 构建路由
使用 Express.js 来实现路由非常简单。Express.js 当前版本为 4.x。在本文中,我们将使用 Express 生成器来快速地创建一个 Express 应用程序,如下所示:
- --- ----------------- -----
该命令将生成一个新的 Express 应用程序,其中已经添加了一些常见的文件和默认路由。现在,让我们详细了解如何使用它们。
基本路由
基本路由是最常见的路由类型。它指定了一个 URL 终端(或路径),它匹配并响应 HTTP GET 请求。URL 终端可以是字符串、正则表达式或字符串模式。下面是一个示例:
------------ ------------- ---- - ---------------- --------- ---
当用户对主页发出 HTTP GET 请求时,应用程序将返回 "Hello, world!" 文本响应。
路由参数
路由参数可以添加到 URL 终端,以便从客户端请求中提取变量。在 Express.js 中,我们可以使用冒号(:)来标识路由参数。路由参数可以是字符串、数字、正则表达式或其他类型的值。下面是一个示例:
--------------------- ------------- ---- - -------------- -- -- - - --------------- ---
在这个例子中,我们定义了一个用于捕获用户 ID 的路由。如果客户端请求 URL /users/123
,则应用程序将返回 "User ID is 123" 文本响应。
路由中间件
路由中间件是 Express.js 中的一种强大类型的路由。它与基本路由非常相似,但它允许开发人员在路由处理程序之前或之后添加中间件功能。这些功能可以是日志记录、验证、错误处理等等。下面是一个示例:
-- ------- --------------------- ---- ----- - ------------------ -- ------------ ------- --- -- ------ ------------ ------------- ---- - ---------------- --------- ---
在这个例子中,我们添加了一个日志记录中间件,它记录每个 HTTP 请求的时间戳。接下来,我们定义了一个基本路由,它响应 HTTP GET 请求并返回 "Hello, world!" 文本响应。
路由处理程序
路由处理程序是在响应路由请求时执行的代码。它可以是任何 JavaScript 函数,接受 HTTP request 和 response 对象作为参数,并用于处理客户端请求。下面是一个示例:
----------------- ------------- ---- - -- ---- ---
在这个例子中,app.get
函数用于定义路由。它有两个参数:
- 路径:要匹配的 URL 路径
- 回调函数:在匹配 URL 路径时执行的代码
回调函数接受两个参数:req
和 res
。req
对象包含客户端请求的信息(例如 URL 参数和请求正文),而 res
对象包含要发送到客户端的响应信息(例如状态码和响应正文)。
结论
这篇文章中,我们探讨了使用 Express.js 构建路由的基础知识。我们了解了路由的工作原理,以及如何使用 Express.js 中的基本路由、路由参数、路由中间件和路由处理函数。掌握 Express.js 的这些基础知识,有助于我们编写更加高效并良好组织架构的 Express 应用程序。如果您有兴趣深入学习这方面的内容,我们建议您查看 Express.js 的官方文档。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66f37a76e1e8e99bfaf76f80