📜  ExpressJS 的路由路径(1)

📅  最后修改于: 2023-12-03 15:00:40.671000             🧑  作者: Mango

ExpressJS 的路由路径

路由路径是一个用于将请求请求映射到特定处理程序或中间件函数的字符串模式。它可以包含静态文本、动态参数和正则表达式。

基本语法
app.METHOD(PATH, HANDLER)
  • app: 一个 express() 实例。
  • METHOD: HTTP 请求方法,例如 GET、POST、PUT、DELETE 等。
  • PATH: 路由路径,可以是字符串、字符串模式或正则表达式。
  • HANDLER: 当路径匹配时要执行的处理程序或中间件函数。

路由路径支持以下几种形式:

静态路径

静态路径是指完全匹配的字符串。当请求的路径与指定的静态路径完全匹配时,将执行相应的处理程序。

// 匹配以 "/users" 结尾的路径
app.get('/users', (req, res) => {
  res.send('用户列表');
});

// 匹配 "/about" 路径
app.get('/about', (req, res) => {
  res.send('关于我们');
});
带参数的路径

通过使用冒号作为前缀,可以创建带参数的路径。参数将作为命名变量添加到 req.params 对象中。

// 匹配以 "/users/任意值" 的路径
app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`请求的用户 ID 是:${userId}`);
});

// 匹配 "/users/42" 和 "/users/123" 路径
app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`请求的用户 ID 是:${userId}`);
});

参数可以通过在路径中指定多个冒号参数进行组合:

// 匹配以 "/users/任意值/posts/任意值" 的路径
app.get('/users/:userId/posts/:postId', (req, res) => {
  const userId = req.params.userId;
  const postId = req.params.postId;
  res.send(`请求的用户 ID 是:${userId},请求的文章 ID 是:${postId}`);
});
带正则表达式的路径

除了直接匹配字符串和带参数的路径外,还可以使用正则表达式匹配路径。在路由路径中使用正则表达式可以使路由更加灵活。

// 匹配以 "/users" 开头,并且后面跟着数字的路径
app.get(/^\/users\/\d+$/, (req, res) => {
  res.send('用户路径匹配成功');
});

// 匹配以 "/users" 或 "/admins" 开头的路径
app.get(/^(\/users|\/admins)$/, (req, res) => {
  res.send('用户或管理员路径匹配成功');
});
路由路径参数的限制

在定义路由路径时,可以使用冒号参数的限制模式。通过在冒号参数后添加一个正则表达式,可以限制参数的格式。

// 匹配以 "/users" 开头,并且后面跟着 3 个数字的路径
app.get('/users/:id(\\d{3})', (req, res) => {
  const userId = req.params.id;
  res.send(`请求的 3 位用户 ID 是:${userId}`);
});
路由路径的其他选项

路由路径还支持其他选项,如忽略大小写、可选参数等。下面是一些常用选项的示例用法:

// 匹配以 "/users" 开头,忽略大小写的路径
app.get('/users', (req, res) => {
  res.send('用户列表');
});

// 匹配以 "/users" 或 "/USERS" 开头的路径
app.get('/users/i', (req, res) => {
  res.send('用户列表');
});

// 匹配以 "/users" 后跟可选的 "/:id" 路径
app.get('/users/:id?', (req, res) => {
  if (req.params.id) {
    res.send(`请求的用户 ID 是:${req.params.id}`);
  } else {
    res.send('用户列表');
  }
});

以上就是 ExpressJS 路由路径的基本用法和常见示例。通过灵活地使用路由路径,可以轻松处理不同的请求并动态地生成响应。