Express配置app.post路由访问返回Cannot GET /customers错误如何解决
Express注册接口报错Cannot GET /customers 解决方案
核心原因
你收到Cannot GET /customers错误的根本原因是Postman发起请求的HTTP方法与后端接口定义的方法不匹配:
你后端代码中定义的是app.post("/customers"),仅接受POST类型的请求,但你在Postman中误选了GET方法发起请求,Express找不到匹配的GET /customers路由,就返回了该错误。
排查解决步骤
- 调整Postman请求方法
打开对应请求的Postman标签页,在请求URL左侧的方法下拉选项中,将默认的GET切换为POST,重新发送请求即可匹配到你编写的接口。 - 补充接口默认返回逻辑
你目前的代码仅在邮箱重复时做了返回处理,邮箱不重复的场景下没有返回逻辑,会导致请求超时,可在接口逻辑末尾补充测试返回:if(existingUser[0]){return res.status(409).send("duplicate email")}; // 新增以下代码 res.status(200).send("邮箱校验通过,可继续执行用户新增逻辑") - 修复SQL注入风险
你当前直接将用户输入的邮箱拼接进SQL语句,存在严重的SQL注入风险,建议改为参数化查询(根据你使用的数据库连接工具规范调整即可):// 替换原有SQL拼接写法 let emailCheckQuery = ` SELECT customer_email FROM Customer WHERE customer_email = ?`; let existingUser = await db.executeQuery(emailCheckQuery, [email]); - 新增异常捕获逻辑
你的异步数据库查询逻辑没有做异常捕获,数据库操作报错时会抛出未捕获异常导致服务崩溃,建议用try/catch包裹异步逻辑:app.post("/customers", async(req, res) => { try { // 原有接口逻辑全部放到此处 } catch (err) { console.error("接口请求错误:", err) res.status(500).send("服务器内部错误") } }) - 验证请求头配置
确保Postman请求的Header中配置了Content-Type: application/json,否则express.json()中间件无法正常解析请求体,会导致req.body为undefined。
内容的提问来源于stack exchange,提问作者ecpetta
相关产品推荐
相关产品推荐

