Dans la fonction Express suivante :
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Quels sont req
y res
? 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);
});
Quels sont req
y res
? Que représentent-ils, que signifient-ils, et que font-ils ?
Merci !
req
est un objet contenant des informations sur la requête HTTP qui a déclenché l'événement. En réponse à req
vous utilisez res
pour renvoyer la réponse HTTP souhaitée.
Ces paramètres peuvent porter n'importe quel nom. Vous pourriez changer ce code en ceci si c'est plus clair :
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Editar:
Disons que vous avez cette méthode :
app.get('/people.json', function(request, response) { });
La demande sera un objet avec des propriétés comme celles-ci (pour n'en citer que quelques-unes) :
request.url
qui sera "/people.json"
quand cette action particulière est déclenchéerequest.method
qui sera "GET"
dans ce cas, d'où la app.get()
appeler.request.headers
contenant des éléments tels que request.headers.accept
que vous pouvez utiliser pour déterminer le type de navigateur à l'origine de la demande, le type de réponses qu'il peut traiter, s'il est capable ou non de comprendre la compression HTTP, etc.request.query
(par exemple /people.json?foo=bar
aurait pour conséquence request.query.foo
contenant la chaîne de caractères "bar"
).Pour répondre à cette demande, vous utilisez l'objet réponse pour construire votre réponse. Pour développer l'objet 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);
});
Vous pourriez vouloir vérifier : fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol . Sans vouloir être désagréable, c'est quelque chose que tous ceux d'entre nous qui développent pour le Web doivent savoir !
J'ai remarqué une erreur dans la réponse de Dave Ward (peut-être une modification récente ?): Les paramètres de la chaîne de requête sont dans request.query
pas request.params
. (Voir https://stackoverflow.com/a/6913287/166530 )
request.params
est rempli par défaut avec la valeur de toutes les "correspondances de composants" 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 des données de formulaire POST'ed. (Voir Comment récupérer les paramètres de requête POST ? )
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
req
=="request"
//res
=="response"
1 votes
Je voulais également ajouter mon opinion, nous devrions préférer utiliser le nom des paramètres comme demande/réponse plutôt que req/res car il n'y a qu'une différence de caractère, qui peut devenir la cause du bug, une fois que notre base de code augmente. Merci.