推荐答案
在 Express 中定义路由的基本语法如下:
// www.javascriptcn.com code example
const express = require('express');
const app = express();
// 定义 GET 请求的路由
app.get('/example', (req, res) => {
res.send('This is a GET request example');
});
// 定义 POST 请求的路由
app.post('/example', (req, res) => {
res.send('This is a POST request example');
});
// 定义 PUT 请求的路由
app.put('/example', (req, res) => {
res.send('This is a PUT request example');
});
// 定义 DELETE 请求的路由
app.delete('/example', (req, res) => {
res.send('This is a DELETE request example');
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000');
});本题详细解读
1. 路由的基本概念
在 Express 中,路由是指确定应用程序如何响应客户端对特定端点的请求。每个路由可以有一个或多个处理函数,这些函数在路由匹配时执行。
2. 路由方法
Express 提供了多种 HTTP 请求方法的路由定义方式,常见的包括:
app.get():处理 GET 请求app.post():处理 POST 请求app.put():处理 PUT 请求app.delete():处理 DELETE 请求
3. 路由路径
路由路径是客户端请求的 URL 路径。例如,/example 是一个路由路径,当客户端请求 http://localhost:3000/example 时,Express 会匹配这个路径并执行相应的处理函数。
4. 路由处理函数
路由处理函数是当路由匹配时执行的函数。它接收两个参数:
req:请求对象,包含客户端请求的信息。res:响应对象,用于向客户端发送响应。
5. 路由链
你可以为同一个路由路径定义多个处理函数,这些函数会按顺序执行。例如:
app.get('/example', (req, res, next) => {
console.log('First handler');
next();
}, (req, res) => {
res.send('Second handler');
});6. 路由参数
你可以使用路由参数来捕获 URL 中的动态部分。例如:
app.get('/users/:userId', (req, res) => {
res.send(`User ID is ${req.params.userId}`);
});在这个例子中,userId 是一个路由参数,可以通过 req.params.userId 访问。
7. 路由模块化
为了保持代码的可维护性,你可以将路由模块化。例如,创建一个单独的路由文件:
// www.javascriptcn.com code example
// routes/example.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Example route');
});
module.exports = router;然后在主文件中使用这个路由:
const exampleRouter = require('./routes/example');
app.use('/example', exampleRouter);8. 中间件与路由
中间件函数可以在路由处理函数之前执行,用于执行一些通用的任务,如身份验证、日志记录等。例如:
app.use((req, res, next) => {
console.log('Middleware executed');
next();
});
app.get('/example', (req, res) => {
res.send('Example route with middleware');
});在这个例子中,中间件函数会在路由处理函数之前执行。