Search code examples
node.jsexpressgetquery-string

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


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.