Perché esistono req.params, req.query e req.body?

3

Sono nuovo su Node.js e Express e ora sto osservando che quando cambio il metodo sulla mia app chiamante i parametri sono in req.param([name]) , req.body.[name] o req.query e dipende dal metodo . Ora le mie domande sono due:

  1. Ci sono delle differenze tra questi tre oggetti? (qualcosa che potrebbe spiegare perché un altro metodo ricarica un oggetto diverso)
  2. Ci sono dei "problemi" se creo una funzione / un modulo che controlli semplice che sia pieno e, ad esempio, modifichi l'oggetto req.body in modo da poter richiamare questo oggetto ogni volta per recuperare i parametri?

EDIT: Dopo la risposta di @ jfriend00 vorrei spiegare meglio il mio dilemma: Sto sviluppando un'api e vorrei creare un modulo in grado di controllare i dati passati con i diversi metodi, per ora scrivo qualcosa del tipo:

if(req.method== 'PUT' || req.method=='POST')
    x=req.body.x;
else
    x=req.query.x;

e vorrei fare qualcosa all'inizio come:

if(req.query!=null)
    req.body=req.query;

così, dopo, in tutti i miei controlli controllerò req.body e non gli altri! Pensi che sia una cattiva pratica?

    
posta Filippo1980 14.09.2016 - 17:02
fonte

1 risposta

13

Tutte e tre le proprietà sono popolate da diverse fonti:

req.query deriva da parametri di query nell'URL come link dove req.query.name === "ted" .

req.params deriva da segmenti di percorso dell'URL che corrispondono a un parametro nella definizione di route, ad esempio /song/:songid . Quindi, con un percorso che utilizza tale designazione e un URL come /song/48586 , quindi req.params.songid === "48586" .

Le proprietà

req.body provengono da un post del modulo in cui i dati del modulo (che vengono inviati nel contenuto del corpo) sono stati analizzati nelle proprietà del tag del corpo.

Usi la proprietà appropriata che corrisponde all'origine dei dati che ti interessano.

Why do req.params, req.query and req.body exist?

Per darti accesso semplificato a tre diversi tipi di dati.

    
risposta data 14.09.2016 - 17:32
fonte

Leggi altre domande sui tag