2013-09-26 69 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。