it-swarm-eu.dev

Warum existieren req.params, req.query und req.body?

Ich bin neu in Node.js und Express und beobachte jetzt, dass sich die Parameter beim Ändern der Methode in meiner aufrufenden App in req.param([name]), req.body.[name] Oder req.query und es hängt von der Methode ab. Jetzt sind meine Fragen zwei:

  1. Gibt es einige Unterschiede zwischen diesen drei Objekten? (etwas, das erklären könnte, warum eine andere Methode ein anderes Objekt nachfüllt)
  2. Gibt es einige "Probleme", wenn ich eine Funktion/ein Modul erstelle, die bzw. das einfach überprüft wird und das beispielsweise das Objekt req.body so ändert, dass ich dieses Objekt jedes Mal aufrufen kann, um die Parameter abzurufen?

EDIT: Nach der Antwort von @ jfriend00 würde ich mein Dilemma besser erklären: Ich entwickle eine API und würde ein Modul erstellen, das die mit den verschiedenen Methoden übergebenen Daten überprüfen kann. Im Moment schreibe ich etwas wie:

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

und ich würde am Anfang etwas tun wie:

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

also werde ich nach all meinen Überprüfungen die Kontrolle über req.body und nicht über die anderen übernehmen! Denken Sie, dass es eine schlechte Praxis ist?

6
Filippo1980

Alle drei Eigenschaften stammen aus verschiedenen Quellen:

req.query stammt von Abfrageparametern in der URL wie http://foo.com/somePath?name=ted wobei req.query.name === "ted".

req.params stammt aus Pfadsegmenten der URL, die einem Parameter in der Routendefinition entsprechen, z. B. /song/:songid. Mit einer Route, die diese Bezeichnung verwendet, und einer URL wie /song/48586, dann req.params.songid === "48586".

req.body Eigenschaften stammen aus einem Formularbeitrag, in dem die Formulardaten (die im Body-Inhalt übermittelt werden) in Eigenschaften des Body-Tags analysiert wurden.

Sie verwenden die entsprechende Eigenschaft, die der Quelle der Daten entspricht, an denen Sie interessiert sind.

Warum existieren req.params, req.query und req.body?

Vereinfachter Zugriff auf drei verschiedene Datentypen.

17
jfriend00