You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+Express后端Postman部分请求404问题求助

Node.js + Express 接口404 Not Found问题排查思路

问题背景

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

相关截图:

  • 服务器截图:
    服务器截图
  • Postman响应截图:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:55:56