Répondre à une première route
Objectif : Renvoyer une réponse JSON pour une requête GET sur la route des commandes.
Votre serveur écoute déjà sur le port 3000, mais il ne distingue pas encore les requêtes reçues. Un navigateur ou un autre client ne peut donc pas lui demander spécifiquement la liste des commandes. Vous allez examiner chaque requête et répondre avec le tableau chargé depuis data/commandes.json lorsque la méthode et l’URL correspondent.
La création du serveur et son écoute sur le port local ont été vues dans la leçon précédente. Ici, vous ajoutez un traitement à la fonction de rappel de createServer : ses paramètres représentent la requête reçue et la réponse à construire. Les propriétés request.method et request.url permettent de reconnaître une requête GET envoyée à /commandes.
Reconnaître la requête attendue
Le serveur doit vérifier les deux éléments : une méthode différente de GET n’est pas la requête attendue, et une URL différente de /commandes ne désigne pas cette ressource. Lorsque les deux conditions sont réunies, vous renvoyez les commandes déjà disponibles en mémoire. Pour toute autre combinaison, le serveur répond avec le statut 404, qui indique que la ressource demandée n’a pas été trouvée.
Adapter src/serveur.js
Conservez les imports, le calcul de démonstration BR-1042 et les opérations de lecture et de réécriture déjà présentes dans votre fichier. Dans le code ci-dessous, la partie à intégrer remplace la création actuelle du serveur, après la lecture et la conversion qui définissent commandes. Elle utilise ces données sans modifier leur structure.
const serveur = createServer((request, response) => {
if (request.method === 'GET' && request.url === '/commandes') {
response.writeHead(200, {
'Content-Type': 'application/json; charset=utf-8'
});
response.end(JSON.stringify(commandes));
return;
}
response.writeHead(404, {
'Content-Type': 'text/plain; charset=utf-8'
});
response.end('Ressource introuvable');
});
serveur.listen(3000, () => {
console.log('Serveur démarré sur http://localhost:3000');
});JSON.stringify transforme le tableau JavaScript en texte JSON, qui peut être envoyé comme corps de réponse. response.end termine la réponse ; le return évite ensuite d’exécuter le traitement de la réponse 404. Cette route renvoie l’ensemble du tableau, sans encore calculer de résumé ni traiter les erreurs de lecture.
Vérifier le comportement du serveur
Depuis la racine du projet, démarrez le serveur avec la commande que vous utilisez déjà pour exécuter src/serveur.js. Dans un second terminal, envoyez une requête sur la route attendue avec curl. Le terminal affiche le texte JSON correspondant aux objets du fichier ; les valeurs exactes dépendent donc de votre data/commandes.json.
curl -i http://localhost:3000/commandesHTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[ ... commandes présentes dans data/commandes.json ... ]L’option -i affiche aussi les en-têtes et le statut de la réponse. Essayez ensuite une autre URL, par exemple /inconnue : le serveur renvoie 404 et le texte Ressource introuvable. Vous pouvez arrêter le serveur dans le terminal comme dans la leçon précédente.
À retenir
Dans la prochaine leçon, vous ajouterez une gestion des erreurs de lecture afin que le serveur puisse répondre proprement si le fichier de commandes ne peut pas être chargé.