Node.js+Express后端Postman部分请求404问题求助
Node.js + Express 接口404 Not Found问题排查思路
问题背景
我是开发新手,正在使用Node.js和Express.js开发应用,用Postman测试后端接口时,部分请求可正常响应,但部分请求持续返回“无法获取URL”的404 Not Found错误,其他路由运行正常。已确认服务端Content-Type已设置为JSON,多次排查代码仍未定位问题。
相关截图:
- 服务器截图:

- Postman响应截图:

相关代码
模型代码(SearchModel.js)
module.exports = (_db) => { db = _db; return SearchModel; }; class SearchModel { //根据商品名称查询商品 static getProductByName(productName) { return db .query('SELECT * FROM Products WHERE productName = ?', [ productName ]) .then((res) => { console.log(res); return res; }) .catch((error) => { console.log(error); return error; }); } //根据性别查询商品 static getProductByGender(gender) { return db .query('SELECT * FROM Products WHERE gender = ?', [gender]) .then((res) => { return res; }) .catch((error) => { return error; }); } //根据品牌查询商品 static getProductByBrand(brand) { return db .query('SELECT * FROM Products WHERE brand=?', [brand]) .then((res) => { return res; }) .catch((error) => { return error; }); } //根据机芯类型查询商品 static getProductByMouvement(mouvement) { return db .query('SELECT * FROM Products WHERE mouvement=?', [mouvement]) .then((res) => { return res; }) .catch((error) => { return error; }); } }
路由代码
// 根据商品名称查询商品 module.exports = (app, db) => { const searchModel = require('../models/SearchModel')(db); // 根据商品名称查询商品的路由 app.get('/api/v1/Search/name', async (req, res) => { const productByName = await searchModel.getProductByName( req.body.productName, ); if (productByName.code) { res.json({ status: 500, msg: 'Server Error!' }); } else if (!productByName) { res.json({ status: 404, msg: 'Product not found!' }); } else { res.json({ status: 200, result: productByName, msg: 'Voilà!' }); } }); };
排查思路
- 路由注册验证:检查该路由模块是否在主应用文件中被正确调用(比如
require('./routes/search')(app, db)),且调用顺序必须在404兜底中间件之前。 - 请求方法匹配检查:当前路由是
GET方法,确认Postman发送的请求方法是否一致;另外GET请求默认不会解析req.body,若要传递参数应改用req.query.productName,否则会导致参数获取失败(虽不直接引发404,但需排除业务逻辑干扰)。 - 路径大小写校验:Express路由路径区分大小写,核对Postman请求路径是否与代码中的
/api/v1/Search/name完全一致,比如是否将Search误写为小写search。 - 中间件拦截排查:在路由函数开头添加
console.log('请求到达目标路由'),查看控制台是否有输出,判断请求是否被前置中间件(如权限校验、日志中间件)拦截。 - 服务器启动日志检查:查看服务器启动时的日志输出,确认该路由是否成功加载,是否存在加载报错信息。
- Postman请求配置核对:检查请求的域名、端口号是否与服务器一致,URL是否存在拼写错误;若用
GET请求传递参数,建议改用Query参数而非Body,避免因服务器不解析GET请求Body导致的异常。
内容的提问来源于stack exchange,提问作者Jenny
相关产品推荐
相关产品推荐

