Node.js : Express app.get with multiple query parameters

Issue

I want to query the yelp api, and have the following route:

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

When I make a GET request to

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

I get the error

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

What am I doing wrong?

Solution

In the requested url http://localhost:3000/yelp?term=food&location=austin

  • base url/address is localhost:3000
  • route used for matching is /yelp
  • querystring url-encoded data is ?term=food&location=austin i.e. data is everything after ?

Query strings are not considered when peforming these matches, for example “GET /” would match the following route, as would “GET /?name=tobi”.

So you should either :

  • use app.get(“/yelp”) and extract the term and location from req.query like req.query.term
  • use app.get(“/yelp/term/:term/location/:location”) but modify the url accordingly as luto described.

Answered By – user568109

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published