Exercice : "Serveur de Citations Inspirantes"
Conditions d’achèvement
Exercice : "Serveur de Citations Inspirantes"
Objectif : Créer un serveur HTTP qui renvoie une citation inspirante aléatoire à chaque requête. Ensuite, introduire Express.js pour améliorer la structure du serveur.
Partie 1: Serveur HTTP Natif
-
Création du serveur HTTP :
- Créez un nouveau dossier nommé
inspirational_quotes. - Ouvrez un terminal, naviguez (
cd) dans ce dossier. - Créez un fichier
server.js.
- Créez un nouveau dossier nommé
-
Script du serveur HTTP :
- Dans
server.js, utilisez le modulehttppour créer un serveur. - Le serveur doit écouter sur le port 3000 et renvoyer une citation inspirante aléatoire à chaque requête.
const http = require('http'); const quotes = [ "Life is what happens when you're busy making other plans. – John Lennon", "The way to get started is to quit talking and begin doing. – Walt Disney", "The future belongs to those who believe in the beauty of their dreams. – Eleanor Roosevelt", ]; const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); const randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; res.end(randomQuote); }); const PORT = 3000; server.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); - Dans
Partie 2: Utilisation d'Express.js
-
Introduction à Express.js :
- Installez Express.js en exécutant
npm init -ysuivi denpm install express. - Créez un fichier
express_server.js.
- Installez Express.js en exécutant
-
Script du serveur avec Express :
- Dans
express_server.js, utilisez Express.js pour créer le même serveur. - Ajoutez une route qui gère le chemin
/quoteet renvoie une citation aléatoire.
const express = require('express'); const app = express(); const quotes = [ "Life is what happens when you're busy making other plans. – John Lennon", "The way to get started is to quit talking and begin doing. – Walt Disney", "The future belongs to those who believe in the beauty of their dreams. – Eleanor Roosevelt", ]; app.get('/quote', (req, res) => { const randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; res.send(randomQuote); }); const PORT = 3000; app.listen(PORT, () => { console.log(`Express server running on port ${PORT}`); }); - Dans
Partie 3: Gestion des Requêtes et des Réponses
-
Gestion avancée :
- Modifiez
express_server.jspour renvoyer une réponse JSON qui contient à la fois la citation et l'auteur. - Ajoutez une gestion d'erreur pour les chemins non trouvés.
app.get('/quote', (req, res) => { const randomIndex = Math.floor(Math.random() * quotes.length); const randomQuote = quotes[randomIndex].split(' – '); res.json({ quote: randomQuote[0], author: randomQuote[1] }); }); app.use((req, res) => { res.status(404).send('404: Page not found'); }); - Modifiez
Partie 4: Défi supplémentaire (Optionnel)
- Amélioration du serveur :
- Ajoutez la possibilité de récupérer une citation par son index via un paramètre d'URL (par exemple,
/quote/0pour la première citation). - Implémentez une route POST qui permet d'ajouter une nouvelle citation à la liste.
- Ajoutez la possibilité de récupérer une citation par son index via un paramètre d'URL (par exemple,
Cet exercice permet aux apprenants de comprendre les bases de la création d'un serveur HTTP en Node.js, de se familiariser avec Express.js, et d'apprendre à gérer les requêtes et les réponses HTTP de manière simple mais significative.
Modifié le: vendredi 3 novembre 2023, 08:59