推荐答案
在 Express 中,路径参数可以通过在路由路径中使用冒号 (:) 来定义。路径参数的值可以通过 req.params 对象访问。
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.get('/users/:userId', (req, res) => {
const userId = req.params.userId;
res.send(`User ID is: ${userId}`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});在这个例子中,:userId 是一个路径参数。当用户访问 /users/123 时,req.params.userId 将会是 123。
本题详细解读
1. 路径参数的定义
在 Express 中,路径参数是通过在路由路径中使用冒号 (:) 来定义的。例如,:userId 表示一个名为 userId 的路径参数。
2. 访问路径参数
路径参数的值可以通过 req.params 对象访问。req.params 是一个包含所有路径参数的对象,键是路径参数的名称,值是实际传递的参数值。
3. 多个路径参数
你可以在一个路由路径中定义多个路径参数。例如:
app.get('/users/:userId/posts/:postId', (req, res) => {
const userId = req.params.userId;
const postId = req.params.postId;
res.send(`User ID is: ${userId}, Post ID is: ${postId}`);
});在这个例子中,访问 /users/123/posts/456 将会返回 User ID is: 123, Post ID is: 456。
4. 路径参数的正则表达式
你还可以使用正则表达式来限制路径参数的格式。例如,限制 userId 必须为数字:
app.get('/users/:userId(\\d+)', (req, res) => {
const userId = req.params.userId;
res.send(`User ID is: ${userId}`);
});在这个例子中,访问 /users/abc 将会返回 404 错误,因为 abc 不是数字。
5. 路径参数的捕获组
你还可以使用捕获组来匹配更复杂的路径参数。例如:
app.get('/files/:filename.:ext', (req, res) => {
const filename = req.params.filename;
const ext = req.params.ext;
res.send(`Filename is: ${filename}, Extension is: ${ext}`);
});在这个例子中,访问 /files/example.txt 将会返回 Filename is: example, Extension is: txt。