如何在Express中处理GET参数?

时间:2013-11-21 10:05:47

标签: javascript node.js express get

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

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

如果用户输入的网址为: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');
}

4 个答案:

答案 0 :(得分:3)

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

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

... 

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

请注意,订单很重要,如果您将"/*"置于顶部,则会占据其他订单。所以它必须是最后一个。

答案 1 :(得分:0)

您可以使用网址模块中的解析功能解析 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' }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

app.get是一个事件处理程序。 不需要if条件。 我希望你改变网址

localhost:8080/user?id=1

localhost:8080/user/1

如果未定义路径ie:localhost:8080 / user / 1,则freamwork会自动显示消息

  

无法GET / user / 1

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

注意:id ,您可以使用此名称访问代码中的值。如果您的网址中有多个变量,例如

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