首页 > express 中收到get请求如何根据参数进行路由处理?

express 中收到get请求如何根据参数进行路由处理?

在提交表单之前,先进行两次请求响应操作

想要实现的效果如下

app.all('/form',functuon(req,res,next){
    if(req.query.key1){
       res.redirect('/form/getkey1');
    }
    if(req.query.key2){
       res.redirect('/form/getkey2');
    }
    if(req.query.key3){
       res.redirect('/form/getkey3');
    }
});

但是实验过程中,第一个可以成功重定向,第二个就不能重定向,请大神指教,不胜感谢。


好像是因为res.redirect()只能使用一次,你请求一次服务器返回也应该是一次,而不是多次


  1. 路由参数用:param, 例如:路由写成"/form/:key", 你就可以通过req.params.key获得路由参数了。我不知道你为什么要这样写。

  2. 关于res.end()、res.redirect()、res.render()等 最好写成return式,不然可能会造成res重复返回,具体如下:

    app.all('/form',functuon(req,res,next){
        if(req.query.key1){
           return res.redirect('/form/getkey1');
        }
        if(req.query.key2){
           return res.redirect('/form/getkey2');
        }
        if(req.query.key3){
           return res.redirect('/form/getkey3');
        }
    });

关于你的bug, if(req.query.key1)表示key1不为转义false(null、undefined、false、0)的时候执行if内的语句,那么请问,你的key1会为转义false吗?如果永远不会,那就永远会执行第一个if。对你代码的理解是有三个key,key1、key2、key3会被提交,那key1就永远不为false。 说白了,不理解你这样写的原因... 你可以再补充下。

【热门文章】
【热门文章】