Récupérer les paramètres d'une requête HTTP
On a vu qu'il y a plusieurs méthodes pour passer des paramètres dans une requête HTML : dans la section "query" de l'url, directement dans l'url et dans le corps (body) de la requête.
Avec Express.js nous allons dans tous les cas utiliser l'objet Request (req).
Paramètre de la section query
Url exemplehttp://localhost:3000/api/users?code=1&nom=Mathieu
Les paramêtres de la section query se retrouvent dans l'objet req.query. Donc pour accéder à la valeur d'un paramêtre on fera req.query.nomParametre. Pour valider qu'un paramêtre est présent on peut faire une condition du genre if(req.query.nomParam)
qui retournera true.
exemple.js |
---|
| app.get('/api/users', (req, res) => {
// Récupère les paramètres de la requête
const queryParams = req.query;
console.log('code :', queryParams.code);
// On pourrait aussi faire
console.log('Nom :', req.query.nom);
// On vérifie que le paramètre code est bien présent
if(!queryParams.code) {
res.status(404);
res.send('Le code est obligatoire');
return;
}
res.send(`Vous avez envoyé le code ${queryParams.code}`);
});
|
Paramètre dans la route
Url exemplehttp://localhost:3000/api/1
On a vu qu'on pouvait aussi envoyer un paramêtre directement dans la route. Dans ce cas on va accéder aux paramêtres par l'objet req.params. On peut utiliser le paramêtre de la même façon qu'avec un paramêtre query.
exemple.js |
---|
| app.get('/api/users/:code', (req, res) => {
// Récupère les paramètres de la requête
const params = req.params;
console.log('code :', params.code);
// On pourrait aussi faire
console.log('code :', req.params.code);
// On vérifie que le paramètre code est bien présent
if(!params.code) {
res.status(404);
res.send('Le code est obligatoire');
return;
}
res.send(`Vous avez envoyé le code ${params.code}`);
});
|
Paramètre dans le corps de la requète
Url exemplePOST http://localhost:3000/api/1
BODY
{
"prenom" : "Mathieu",
"nom" : "Fréchette"
}
Pour récupérer facilement les données dans le corps de la requète on va utiser le middleware express.json()
. Le contenu du corps de la requète se retrouvera dans l'objet req.body sous la forme d'un objet JavaScript.
exemple.js |
---|
| app.post('/api/users', (req, res) => {
// Récupère les paramètres de la requête
const utilisateur = req.body;
// On vérifie que le paramètre nom est bien présent
if(!utilisateur.prenom || !utilisateur.nom) {
res.status(400);
res.send('Le nom complet est obligatoire');
return;
}
// Code pour enregistrer l'utilisateur dans la base de données
res.send(`L'utilisateur ${utilisateur.prenom} ${utilisateur.nom} a été créé`);
});
|