【问题标题】:How to handle GET parameter in Express?如何处理 Express 中的 GET 参数?
【发布时间】:2013-11-21 10:05:47
【问题描述】:

我想获取 url 参数,如果 url 被用户错误定义,我需要发送错误。

我的网址是:localhost:8080/user?id=1

如果用户输入的url是:localhost:8080/use?id=1,我们如何处理?

if (app.get("/user")) {
  app.get("/user",function(req,res,next){
    console.log('In');
  });
} else {
  console.log('something went wrong in url');
}

【问题讨论】:

    标签: javascript node.js express get


    【解决方案1】:

    不需要 if/else 语句。只需列出所有路径,并在末尾添加默认路径。如果查询与您的任何定义都不匹配,它将调用默认路径。

    app.get("/user",function(req,res){
        res.send('called user');
    });
    
    ... 
    
    app.get("/*", function(req, res){
       res.send('wrong path');
    });
    

    注意顺序很重要,如果你把"/*"放在最上面,它会支配其他的。所以它必须是最后一个。

    【讨论】:

      【解决方案2】:

      您可以使用 url 模块中的 parse 函数解析 req.url

      这是来自 node.js 文档的the example

      node> require('url').parse('/status?name=ryan')
      { href: '/status?name=ryan',
        search: '?name=ryan',
        query: 'name=ryan',
        pathname: '/status' }
      

      【讨论】:

        【解决方案3】:

        app.get 是一个事件处理程序。仅当请求与该路由匹配时,才会调用相应的 callback。您无需为其指定 if 语句。您需要学习一些 javascript 以及事件/回调如何工作。我认为this article 看起来不错。

        【讨论】:

          【解决方案4】:

          app.get 是一个事件处理程序。 不需要 if 条件。 我更喜欢你从

          更改网址
          localhost:8080/user?id=1
          

          localhost:8080/user/1
          

          如果路径ie: localhost:8080/user/1 没有定义,那么框架会自动显示消息

          无法获取 /user/1

          app.get("/user/:id", function(req, res){
          console.log('In userId = '+req.params.id);
          }) ;
          

          注意:id,你可以使用这个名字来访问你代码中的值。如果你的url中有多个变量,例如

          localhost:8080/user/1/damodaran
          

          所以你的 app.get 看起来像

          app.get("/user/:id/:name", function(req, res){
          console.log('In userId = '+req.params.id+' name:'++req.params.name);
          }) ;
          

          检查这些链接

          expressjs api

          Express app.get documentation

          【讨论】:

            猜你喜欢
            • 2020-08-21
            • 1970-01-01
            • 2018-11-11
            • 1970-01-01
            • 2023-03-05
            • 2022-11-28
            • 1970-01-01
            • 2023-03-05
            • 2017-04-19
            相关资源
            最近更新 更多