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

Express中GET请求匹配年月路径参数返回Cannot GET 404错误问题

问题原因
  • 路由路径配置缺失开头的/:你代码中app.get("api/courses/:id")和app.get("api/posts/:year/:month")两个路由的路径开头没有加根路径斜杠/,Express路由匹配规则要求绝对路径匹配,缺失斜杠的路径无法匹配到/api/xxx格式的请求路径,因此访问时返回404错误。
  • 额外注意:你当前代码中调用的是req.query,该对象用于获取URL后面的查询字符串参数(格式为?参数名=值),如果要获取/api/posts/:year/:month这类路由路径中定义的动态参数,需要使用req.params。
修复方案

修改两处路由的路径配置,补全开头的/,如果需要返回路径参数同步修改取值对象即可,修复后代码如下:

const express = require('express');
const app = express();

app.get("/", (req, res) => {
    res.send("hellllo worls");
});

app.get("/api/courses", (req, res) => {
    res.send([1, 2, 3]);
});

// 补全路径开头的/
app.get("/api/courses/:id", (req, res) => {
    // 若要获取路由id参数改为req.params即可
    res.send(req.params);
});

// 补全路径开头的/
app.get("/api/posts/:year/:month", (req, res) => {
    // 获取年份、月份路径参数
    res.send(req.params);
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`listening on port ${port}...`);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:18:00