在 Express.js 中定义多个 HTTP 方法的路由,你可以选择几种不同的方式来实现。以下是两种主要的方法:
1. 使用 app.route()
app.route()
提供了一种链式定义多个HTTP方法的能力,这有助于避免重复书写相同的路径。这种方式特别适合当同一个路径需要处理多种HTTP方法时。
const express = require('express');
const app = express();
app.route('/users')
.get((req, res) => {
// 获取用户列表
res.send('GET request to the /users route');
})
.post((req, res) => {
// 创建新用户
res.send('POST request to the /users route');
})
.put((req, res) => {
// 更新用户信息
res.send('PUT request to the /users route');
})
.delete((req, res) => {
// 删除用户
res.send('DELETE request to the /users route');
});
app.listen(3000, () => console.log('Server started on port 3000'));
2. 使用独立的路由定义
对于每个HTTP方法使用独立的 app.METHOD()
调用,其中 METHOD
是具体的HTTP动词(如 get
, post
, put
, delete
等)。虽然这种方法会导致一些代码重复,但它提供了更大的灵活性,特别是当你想要为每个方法添加额外逻辑或中间件时。
const express = require('express');
const app = express();
// 定义 GET 请求处理器
app.get('/users', (req, res) => {
// 获取用户列表
res.send('GET request to the /users route');
});
// 定义 POST 请求处理器
app.post('/users', (req, res) => {
// 创建新用户
res.send('POST request to the /users route');
});
// 定义 PUT 请求处理器
app.put('/users/:id', (req, res) => {
// 更新指定ID的用户信息
res.send(`PUT request to the /users/${req.params.id} route`);
});
// 定义 DELETE 请求处理器
app.delete('/users/:id', (req, res) => {
// 删除指定ID的用户
res.send(`DELETE request to the /users/${req.params.id} route`);
});
app.listen(3000, () => console.log('Server started on port 3000'));
3. 使用 Router 对象(推荐)
如果你的应用程序变得复杂或者你希望将路由逻辑组织成模块化的方式,可以考虑使用 express.Router()
。这样不仅可以让代码更加整洁,还可以轻松地在不同文件中管理路由。
const express = require('express');
const router = express.Router();
// 定义 GET 请求处理器
router.get('/', (req, res) => {
// 获取用户列表
res.send('GET request to the /users route');
});
// 定义 POST 请求处理器
router.post('/', (req, res) => {
// 创建新用户
res.send('POST request to the /users route');
});
// 定义 PUT 请求处理器
router.put('/:id', (req, res) => {
// 更新指定ID的用户信息
res.send(`PUT request to the /users/${req.params.id} route`);
});
// 定义 DELETE 请求处理器
router.delete('/:id', (req, res) => {
// 删除指定ID的用户
res.send(`DELETE request to the /users/${req.params.id} route`);
});
module.exports = router;
然后在主应用文件中挂载路由器:
const express = require('express');
const app = express();
const usersRouter = require('./routes/users'); // 假设你的路由文件名为 users.js 并位于 routes 文件夹下
// 挂载 usersRouter 到 '/users' 路径
app.use('/users', usersRouter);
app.listen(3000, () => console.log('Server started on port 3000'));
使用 express.Router()
的好处在于它允许你创建可复用的路由句柄,并且能够更好地组织和维护大型应用程序的路由结构。