首页 > 解决方案 > 如果在同一级别有路线/参数,如何到达路线

问题描述

所以我试图去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}`})
        }

})

标签: node.jsexpressejs

解决方案


你的问题有问题。这两条路线:

stud_router.post(`/students/add`, ...)
stud_router.get(`/students/:email` , ...)

不要以任何方式重叠,因为一个用于 GET 请求,一个用于 POST 请求。传入请求将仅匹配其中一个请求。所以,如果有什么事情发生了stud_router.get('/students/:email' , ...),那么它一定是 GET 并且它永远不会匹配另一条路线。

因此,看起来客户端可能对发送 POST 还是 GET 感到困惑。或者,您的路线定义对它们打算匹配的内容感到困惑。


推荐阅读