Frage

In der folgenden Express-Funktion:

app.get('/user/:id', function(req, res){
    res.send('user' + req.params.id);
});

Was sind req und res? Was stehen sie für, was bedeuten sie, und was tun sie?

Danke!

War es hilfreich?

Lösung

req ist ein Objekt, das Informationen über die HTTP-Anforderung, die das Ereignis ausgelöst hat. Als Reaktion auf req verwenden Sie res die gewünschte HTTP-Antwort zurück zu senden.

Diese Parameter können dem Namen etwas werden. Man könnte diesen Code auf diese ändern, wenn es klar ist:

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

Edit:

Angenommen, Sie haben diese Methode:

app.get('/people.json', function(request, response) { });

Die Anfrage wird ein Objekt mit Eigenschaften wie diese (um nur einige zu nennen) sein:

  • request.url, die "/people.json" sein wird, wenn diese bestimmte Aktion ausgelöst wird,
  • request.method, die "GET" in diesem Fall sein wird, daher der app.get() Anruf.
  • Eine Reihe von HTTP-Headern in request.headers, Elemente wie request.headers.accept enthält, die Sie Art von Browser verwenden können, um festzustellen, was den Antrag gestellt hat, was für Antworten kann damit umgehen, auch wenn es in der Lage HTTP-Komprimierung zu verstehen, etc.
  • Ein Array von Abfragezeichenfolge Parameter, ob es irgendwelche, in request.query (z.B. /people.json?foo=bar in request.query.foo führen würde die Zeichenfolge "bar" enthält).

Als Antwort auf diese Anforderung, verwenden Sie das Antwortobjekt Ihre Antwort zu bauen. Zur Erweiterung auf dem people.json Beispiel:

app.get('/people.json', function(request, response) {
  // We want to set the content-type header so that the browser understands
  //  the content of the response.
  response.contentType('application/json');

  // Normally, the data is fetched from a database, but we can cheat:
  var people = [
    { name: 'Dave', location: 'Atlanta' },
    { name: 'Santa Claus', location: 'North Pole' },
    { name: 'Man in the Moon', location: 'The Moon' }
  ];

  // Since the request is for a JSON representation of the people, we
  //  should JSON serialize them. The built-in JSON.stringify() function
  //  does that.
  var peopleJSON = JSON.stringify(people);

  // Now, we can use the response object's send method to push that string
  //  of people JSON back to the browser in response to this request:
  response.send(peopleJSON);
});

Andere Tipps

bemerkte ich einen Fehler in Dave Wird Antwort (vielleicht eine kürzliche Änderung?): Die Query-String-Paramater sind in request.query, nicht request.params. (Siehe https://stackoverflow.com/a/6913287/166530 )

request.params ist standardmäßig mit dem Wert des „-Komponente matches“ in Routen gefüllt, d.

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

und, wenn Sie Express konfigurieren seinen bodyparser zu verwenden (app.use(express.bodyParser());) auch mit POST'ed Formulardaten. (Siehe Wie POST Abfrageparameter abzurufen? )

Anfrage und Antwort.

Um die req zu verstehen, ausprobieren console.log(req);.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top