Skip to content

路由

在 Express 中,路由是处理客户端请求的关键部分。路由定义了 URL 路径与特定的请求方法(如 GETPOSTPUTDELETE)之间的映射关系

基本路由

js
app.post('/submit', (req, res) => {
  res.send('Data received');
});

动态路由

  • 你可以在路径中使用 路径参数
js
app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID is: ${userId}`);
});
  • 你可以使用 正则表达式 来动态匹配某些路径。
js
app.get('/user/:userId([0-9]+)', (req, res) => {
  const userId = req.params.userId;
  res.send(`User ID is: ${userId}`);
});

路由方法的链式调用

Express 允许你对同一路径注册多个路由处理方法,可以进行链式调用。这对于处理不同 HTTP 请求方法(如 GETPOST 等)非常有用。

js
app.route('/user')
  .get((req, res) => {
    res.send('GET request to /user');
  })
  .post((req, res) => {
    res.send('POST request to /user');
  });

路由模块化

了使代码更加模块化和可维护,Express 允许你将路由分离到不同的文件中。你可以创建路由模块并将它们挂载到主应用中。

  1. 创建路由模块
js
const express = require('express');
const router = express.Router();

router.get('/profile', (req, res) => {
  res.send('User Profile');
});

router.get('/settings', (req, res) => {
  res.send('User Settings');
});

module.exports = router;
  1. 在主应用中挂载路由模块
js
const express = require('express');
const userRoutes = require('./userRoutes');

const app = express();

// 挂载路由模块
app.use('/user', userRoutes);

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

访问 /user/profile/user/settings 时,会触发 userRoutes 中定义的路由。