ExpressJS 路由是指定义应用程序端点 (URI) 以及响应客户端请求的方式。它是 Express 框架的核心功能之一,用于确定应用程序如何响应特定 HTTP 方法 (GET, POST 等) 和路径的客户端请求。
原因:
解决方案:
// 确保路由路径正确定义
app.get('/users', (req, res) => {
res.send('用户列表');
});
// 处理根路径
app.get('/', (req, res) => {
res.send('首页');
});
// 使用路由中间件组织路由
const userRouter = require('./routes/users');
app.use('/users', userRouter);
原因:
解决方案:
// 正确获取路由参数
app.get('/users/:userId', (req, res) => {
const userId = req.params.userId;
// 添加参数验证
if (!isValidUserId(userId)) {
return res.status(400).send('无效的用户ID');
}
res.send(`用户ID: ${userId}`);
});
原因:
解决方案:
// 中间件应该放在路由之前
app.use(express.json()); // 解析JSON请求体
app.use(loggerMiddleware); // 自定义日志中间件
// 确保调用next()继续处理
function authMiddleware(req, res, next) {
if (req.headers.authorization) {
next(); // 继续处理
} else {
res.status(401).send('未授权');
}
}
原因:
解决方案:
// 正确配置静态文件服务
app.use(express.static('public')); // 服务public目录下的文件
// 可以添加虚拟路径前缀
app.use('/static', express.static('public'));
原因:
解决方案:
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('用户列表');
});
module.exports = router;
// app.js
const userRouter = require('./routes/users');
app.use('/users', userRouter); // 注意路径前缀
console.log
检查请求对象通过以上方法和实践,可以解决大多数 ExpressJS 路由相关问题。
没有搜到相关的文章