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?
The app. get() function routes the HTTP GET Requests to the path which is being specified with the specified callback functions.
Your query parameters can be retrieved from the query object on the request object sent to your route. It is in the form of an object in which you can directly access the query parameters you care about. In this case Express handles all of the URL parsing for you and exposes the retrieved parameters as this object.
In the requested url http://localhost:3000/yelp?term=food&location=austin
localhost:3000
/yelp
?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 :
req.query.term
Have you tried calling it like this?
http://localhost:30000/yelp/term/food/location/austin
The URL you need to call usually looks pretty much like the route, you could also change it to:
/yelp/:location/:term
To make it a little prettier:
http://localhost:30000/yelp/austin/food
I want to add to @luto's answer. There is no need to define query string parameters in the route. For instance the route /a
will handle the request for /a?q=value
.
The url parameters is a shortcut to define all the matches for a pattern of route so the route /a/:b
will match
/a/b
/a/c
/a/anything
it wont match
/a/b/something
or /a
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With