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
相关产品推荐
相关产品推荐

