在Express中,路由是一个核心概念,它定义了客户端的请求与服务器处理函数之间的映射关系。
- 路由的基本概念:
- 路由在广义上可以理解为一种映射关系。
- 在Express中,路由特指客户端的HTTP请求(如GET、POST等)与服务器处理函数之间的映射关系。
- 一个路由通常由三部分组成:请求类型(如GET、POST)、请求的URL地址以及处理函数。
- 路由的使用:
- Express提供了一系列方法来定义和使用路由,基本格式为
app.<method请求方法>(path, callback)
。 - 例如,使用
app.get()
定义一个GET请求的路由:app.get('/home', (req, res) => {
res.send('Hello from /home');
});
- 当客户端发送一个GET请求到
/home
路径时,服务器会调用相应的处理函数并返回'Hello from /home'。
- Express提供了一系列方法来定义和使用路由,基本格式为
- 模块化路由:
- 对于大型应用,将所有路由都定义在主文件中可能会导致代码难以维护。因此,Express支持将路由抽离为单独的模块。
- 创建一个路由文件(如
routes/index.js
),在该文件中定义并导出路由:const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Home page');
});
module.exports = router;
- 在主文件(如
app.js
)中引入并使用该路由模块:const express = require('express');
const indexRouter = require('./routes/index');
const app = express();
app.use('/', indexRouter);
app.listen(3000, () => {
console.log('Server started on port 3000');
});
- 中间件与路由:
- Express中间件是一个函数,它可以访问请求对象(req)、响应对象(res)以及应用程序请求-响应周期中的下一个中间件函数(next)。
- 中间件可以用于执行各种任务,如日志记录、身份验证、会话管理等。
- 中间件可以全局应用,也可以针对特定路由应用。
- 路由的匹配过程:
- 当一个HTTP请求到达服务器时,Express会按照定义的路由顺序进行匹配。
- 一旦找到匹配的路由,就会调用相应的处理函数,并停止后续的匹配过程。
- 如果没有找到匹配的路由,Express会返回一个404错误。
- 路由参数与通配符:
- 路由参数允许你从URL中捕获值,并将其作为参数传递给处理函数。例如,
/users/:id
中的:id
就是一个路由参数。 - 通配符(如
*
)可以匹配任意路径,并捕获该路径作为参数。这通常用于处理静态资源或404错误。
- 路由参数允许你从URL中捕获值,并将其作为参数传递给处理函数。例如,