如何在Express中处理GET参数?
我想获得url参数,如果url被用户错误定义,我需要发送一个错误。
我的url是: localhost:8080/user?id=1
如果用户input的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'); }
不需要if / else语句。 只需列出所有path,并在末尾添加一个默认path。 如果查询与您的任何定义不匹配,它将调用默认path。
app.get("/user",function(req,res){ res.send('called user'); }); ... app.get("/*", function(req, res){ res.send('wrong path'); });
请注意,顺序是重要的,如果你把"/*"
放在最上面,它将主宰其他。 所以它必须是最后一个。
你可以使用来自url模块的parsing函数来parsingreq.url :
以下是node.js文档中的示例 :
node> require('url').parse('/status?name=ryan') { href: '/status?name=ryan', search: '?name=ryan', query: 'name=ryan', pathname: '/status' }
app.get
是一个事件处理程序。 仅当请求与该路由匹配时才会调用相应的callback
。 你不需要为它指定一个if语句。 你需要学习一些JavaScript以及事件/callback是如何工作的。 我觉得这篇文章看起来不错。
app.get是一个事件处理程序。 没有必要的条件。 我更喜欢你改变url
localhost:8080/user?id=1
至
localhost:8080/user/1
如果pathie:localhost:8080 / user / 1没有被定义,则前台程序会自动显示消息
无法GET / user / 1
app.get("/user/:id", function(req, res){ console.log('In userId = '+req.params.id); }) ;
注意:id ,你可以使用这个名字来访问代码中的值。例如,如果你的url中有多个variables,例如
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
快递app.get文档