Dans la fonction Express suivante:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Que sont req
etres
? Que représentent-ils, que signifient-ils et que font-ils?
Merci!
Dans la fonction Express suivante:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Que sont req
etres
? Que représentent-ils, que signifient-ils et que font-ils?
Merci!
Réponses:
req
est un objet contenant des informations sur la requête HTTP qui a déclenché l'événement. En réponse à req
, vous utilisezres
pour renvoyer la réponse HTTP souhaitée.
Ces paramètres peuvent être nommés n'importe quoi. Vous pouvez changer ce code en ceci si c'est plus clair:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Éditer:
Disons que vous avez cette méthode:
app.get('/people.json', function(request, response) { });
La requête sera un objet avec des propriétés comme celles-ci (pour n'en nommer que quelques-unes):
request.url
, qui sera "/people.json"
lorsque cette action particulière sera déclenchéerequest.method
, qui sera "GET"
dans ce cas, d'où l' app.get()
appel.request.headers
, contenant des éléments tels que request.headers.accept
, que vous pouvez utiliser pour déterminer le type de navigateur qui a effectué la requête, le type de réponses qu'il peut gérer, s'il est capable ou non de comprendre la compression HTTP, etc.request.query
(par exemple, cela /people.json?foo=bar
aurait pour résultat de request.query.foo
contenir la chaîne "bar"
).Pour répondre à cette demande, vous utilisez l'objet de réponse pour créer votre réponse. Pour développer l' people.json
exemple:
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
et res
structure, il est décrit dans docs express: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
J'ai remarqué une erreur dans la réponse de Dave Ward (peut-être un changement récent?): Les paramètres de la chaîne de requête sont request.query
, non request.params
. (Voir https://stackoverflow.com/a/6913287/166530 )
request.params
par défaut est rempli avec la valeur de toute "correspondance de composant" dans les routes, c'est-à-dire
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
et, si vous avez configuré express pour utiliser son bodyparser ( app.use(express.bodyParser());
) également avec les données de formulaire POST. (Voir Comment récupérer les paramètres de requête POST? )
req
=="request"
//res
=="response"