2013-09-26 33 views
7

我要查询的叫喊API,并具有以下路线:的Node.js:快速app.get多个查询参数

app.get("/yelp/term/:term/location/:location", yelp.listPlaces) 

当我做一个GET请求来

http://localhost:3000/yelp?term=food&location=austin

我得到的错误

Cannot GET /yelp?term=food&location=austin 

我在做什么错?

回答

9

你试过这样调用过吗?

http://localhost:30000/yelp/term/food/location/austin 

需要通常所说的URL看起来很像的路线,你也可以将其更改为:

/yelp/:location/:term 

为了使它有点漂亮:

http://localhost:30000/yelp/austin/food 
4

我想要添加到@ luto的答案。无需在路由中定义查询字符串参数。例如,路线/a将处理/a?q=value的请求。

的URL参数是一个快捷方式来定义所有的比赛路线的模式,使路线/a/:b将匹配

  1. /a/b
  2. /a/c
  3. /a/anything

它不会匹配

/a/b/something/a

8

在所请求的URL http://localhost:3000/yelp?term=food&location=austin

  • 基本URL /地址是用于匹配localhost:3000
  • 路线是/yelp
  • 查询字符串网址编码的数据被?term=food&location=austin即数据是后一切?

执行这些匹配时不会考虑查询字符串,例如“GET /”将匹配以下路由,如同“GET /?name = tobi”一样。

所以,你应该:

  • 使用app.get( “/喊叫”),并从中提取req.query像req.query.term
  • 使用app.get术语和位置(“/狗吠/学期/:term/location /:location“),但相应地按照luto的描述修改url。