2013-01-19 6 views

risposta

62

req.params contiene parametri del percorso (nella parte di percorso del URL), e req.query contiene i parametri di query URL (dopo il ? nell'URL).

È inoltre possibile utilizzare req.param(name) per cercare un parametro in entrambe le posizioni (nonché req.body), ma questo metodo è ora deprecato.

+0

Ah, ok, grazie, in modo che entrambi è fornito da espresso. E i dati POST posso accedere tramite req.body.myParam? –

+0

Giusto. Quale usare dipende da cosa stai cercando di fare. – JohnnyHK

+0

Nota anche: "L'accesso diretto a req.body, req.params e req.query dovrebbe essere favorito per maggiore chiarezza, a meno che tu non accetti realmente l'input da ciascun oggetto." - la documentazione express –

122

Dato questo percorso

app.get('/hi/:param1', function(req,res){}); 

e dato questo URL http://www.google.com/hi/there?qs1=you&qs2=tube

Avrete:

req. interrogazione

{ 
    qs1: 'you', 
    qs2: 'tube' 
} 

req. params

{ 
    param1: 'there' 
} 

Express req.params >>

+7

Eccellente, davvero chiaro! – abernier

+0

Cosa succede se ho bisogno di ottenere/hi /? – daniel

+0

dai un'occhiata a req.url o req.originalUrl o req._originalUrl, quindi dividi su '/' – ruffrey

1

Si dovrebbe essere in grado di accedere alla query usando la notazione punto ora.

Se si desidera accedere dire si sta ricevendo una richiesta GET a /checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX e si desidera prendere il interrogazione utilizzato.

var type = req.query.type, 
    email = req.query.email, 
    utm = { 
    source: req.query.utm_source, 
    campaign: req.query.utm_campaign 
    }; 

Parametri sono utilizzati per il parametro definito sé per la ricezione richiesta, qualcosa di simile (esempio):

router.get('/:userID/food/edit/:foodID', function(req, res){ 
//sample GET request at '/xavg234/food/edit/jb3552' 

var userToFind = req.params.userID;//gets xavg234 
var foodToSearch = req.params.foodID;//gets jb3552 
User.findOne({'userid':userToFind}) //dummy code 
    .then(function(user){...}) 
    .catch(function(err){console.log(err)}); 
});