In der folgenden Express-Funktion:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Was sind req
und res
? Wofür stehen sie, was meinen sie und was tun sie?
Vielen Dank!
In der folgenden Express-Funktion:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Was sind req
und res
? Wofür stehen sie, was meinen sie und was tun sie?
Vielen Dank!
Antworten:
req
ist ein Objekt, das Informationen zu der HTTP-Anforderung enthält, 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 beliebig benannt werden. Sie können diesen Code in diesen Code ändern, wenn es klarer ist:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Bearbeiten:
Angenommen, Sie haben diese Methode:
app.get('/people.json', function(request, response) { });
Die Anfrage ist ein Objekt mit Eigenschaften wie diesen (um nur einige zu nennen):
request.url
"/people.json"
Dies ist der Fall, wenn diese bestimmte Aktion ausgelöst wirdrequest.method
, was "GET"
in diesem Fall sein wird, daher der app.get()
Aufruf.request.headers
mit Elementen wie request.headers.accept
, mit denen Sie bestimmen können, welche Art von Browser die Anforderung gestellt hat, welche Art von Antworten verarbeitet werden können, ob die HTTP-Komprimierung verstanden werden kann oder nicht usw.request.query
(z. B. /people.json?foo=bar
würde dazu führen request.query.foo
, dass die Zeichenfolge enthalten ist "bar"
).Um auf diese Anfrage zu antworten, verwenden Sie das Antwortobjekt, um Ihre Antwort zu erstellen. So erweitern Sie das 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);
});
req
und res
Struktur ist es in Express docs beschrieben: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
Ich habe einen Fehler in Dave Wards Antwort bemerkt (vielleicht eine kürzliche Änderung?): Die Parameter der Abfragezeichenfolge sind in request.query
, nicht request.params
. (Siehe https://stackoverflow.com/a/6913287/166530 )
request.params
Standardmäßig ist der Wert aller "Komponentenübereinstimmungen" in Routen angegeben, d. h
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
und wenn Sie express so konfiguriert haben, dass es seinen bodyparser ( app.use(express.bodyParser());
) auch mit POST-Formulardaten verwendet. (Siehe So rufen Sie POST-Abfrageparameter ab. )
req
=="request"
//res
=="response"