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

Express后端Axios GET请求访问根路径报404问题排查

问题根因
  • 全局作用域下的Axios请求在服务启动阶段就会执行,仅打印结果到终端,和用户访问接口的行为完全无关,请求到达服务端时不会触发这段逻辑
  • 你初始化了Router实例但没有为其注册任何路径匹配的处理方法,直接挂载到根路径后,所有访问http://localhost:3002/的请求找不到对应的处理逻辑,就会返回404错误
  • 中间件注册顺序有误,body-parser的JSON解析中间件需要在路由挂载前注册,否则会出现请求体无法解析的问题
修复后可运行代码
const express = require('express');
const bodyParser = require('body-parser');
const router = require('express').Router();
const cors = require('cors');
const axios = require('axios').default;

const app = express();
// 按正确顺序注册公共中间件
app.use(cors());
app.use(bodyParser.json());

// 为根路径注册GET请求处理逻辑
router.get('/', async (req, res) => {
  try {
    // 收到前端请求时再发起第三方接口调用
    const apiRes = await axios.get('https://rickandmortyapi.com/api/character');
    // 将拿到的接口数据返回给请求方
    res.json(apiRes.data);
  } catch (err) {
    // 捕获异常返回标准化错误信息
    res.status(500).json({
      code: 500,
      message: '获取角色数据失败',
      errMsg: err.message
    })
  }
});

app.use('/', router);

app.listen(3002, () => {
  console.log('服务已启动,监听3002端口');
});
验证步骤
  • 替换原有代码后重启Node服务
  • 直接在浏览器访问http://localhost:3002/,即可正常获取到Rick and Morty API返回的角色列表数据,不会再出现404报错
  • 后续新增接口只需要在router上按照router.get(路径, 处理函数)、router.post(路径, 处理函数)的格式注册即可,所有和请求相关的业务逻辑都需要写在对应的路由处理函数内部,不要直接写在全局作用域。

内容的提问来源于stack exchange,提问作者svasune

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:27:38