2013-09-26 9 views
7

voglio interrogare l'API Yelp, e hanno il seguente itinerario:Node.js: Esprimere app.get con più parametri di query

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

Quando faccio una richiesta GET a

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

ottengo l'errore

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

che cosa sto facendo di sbagliato?

risposta

9

Hai provato a chiamarlo così?

http://localhost:30000/yelp/term/food/location/austin 

L'URL è necessario chiamare di solito assomiglia molto il percorso, si potrebbe anche cambiare a:

/yelp/:location/:term 

Per rendere un po 'più carina:

http://localhost:30000/yelp/austin/food 
4

I voglio aggiungere alla risposta di @ luto. Non è necessario definire i parametri della stringa di query nel percorso. Ad esempio il percorso /a gestirà la richiesta per /a?q=value.

I parametri URL è una scorciatoia per definire tutte le partite per un modello di percorso in modo che il percorso /a/:b corrisponderà

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

è partita wont

/a/b/something o /a

8

Nel URL richiesto http://localhost:3000/yelp?term=food&location=austin

  • di base URL/indirizzo è localhost:3000
  • percorso utilizzato per la corrispondenza è /yelp
  • querystring con codifica URL tecnica è ?term=food&location=austin vale a dire dei dati è tutto dopo?

stringhe query non sono considerati quando peforming queste partite, ad esempio "GET /" sarebbe partita il seguente itinerario, come sarebbe "GET /? Name = Tobi".

Così si debbono:

  • uso app.get ("/ yelp") ed estrarre il termine e la posizione da req.query come req.query.term
  • uso app.get ("/ Yelp/termine /: term/location /: location ") ma modifica l'url di conseguenza come descritto da luto.
Problemi correlati