node.js - 如果在同一级别有路线/参数,如何到达路线
问题描述
所以我试图去stud_router.post(/students/add )
,但我被定向到stud_router.get(/students/:email )
,我想去,/students/add
但它把我送到/students/:email
而不是/students/add
。
stud_router.post(`/students/add` , (req,res,next) => {
res.render(`studentadd/students_add`)
})
stud_router.get(`/students/:email` , (req,res ,next) => {
const found = data.some( stud => stud.email === req.params.email)
if (found) {
res.send(data.filter( stud => stud.email === req.params.email ))
} else {
res.status(400).send({ msg: `no member with the email of ${req.params.email}`})
}
})
解决方案
你的问题有问题。这两条路线:
stud_router.post(`/students/add`, ...)
stud_router.get(`/students/:email` , ...)
不要以任何方式重叠,因为一个用于 GET 请求,一个用于 POST 请求。传入请求将仅匹配其中一个请求。所以,如果有什么事情发生了stud_router.get('/students/:email' , ...)
,那么它一定是 GET 并且它永远不会匹配另一条路线。
因此,看起来客户端可能对发送 POST 还是 GET 感到困惑。或者,您的路线定义对它们打算匹配的内容感到困惑。
推荐阅读
- encryption - Elixir 中的 JWS 令牌生成
- ios - 将视频播放大小调整为 UIView 大小
- c# - 页面加载时如何将 asp.net 网格视图代码与网格视图一起加载?
- javascript - react-table 中的条件单元格渲染
- node.js - 基于 Node.js 的命令行工具“force-dev-tool”在退出之前需要大量时间
- mysql - 如何检查列中的值并使用 sql 在表上删除/继续读取(选择)?
- c# - 嵌套类属性
- c# - Visual Studio App Center:“等待”运算符只能在异步方法中使用
- r - downloadHandler 没有产生所需的输出
- git - 如何在 Jenkins 的 workSpace/Slave 上禁用证书验证