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

前端 未结 3 1379
渐次进展
渐次进展 2021-02-06 03:28

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

相关标签:
3条回答
  • 2021-02-06 04:07

    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
    
    0 讨论(0)
  • 2021-02-06 04:24

    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

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

    it wont match

    /a/b/something or /a

    0 讨论(0)
  • 2021-02-06 04:25

    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.
    0 讨论(0)
提交回复
热议问题