Comment écrire une API REST en JavaScript en 30 minutes : guide pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi une API REST en JavaScript en 30 minutes ?

\n

Le développement web moderne est impensable sans API (Application Programming Interface). REST (Representational State Transfer) est le style architectural le plus populaire pour créer des services web. Si vous souhaitez apprendre rapidement le développement backend ou lancer votre premier serveur, JavaScript et Node.js sont le choix idéal. En 30 minutes, vous pourrez créer une API REST complète qui traitera les requêtes, renverra des données au format JSON et fonctionnera avec une base de données (dans notre exemple, un simple tableau en mémoire).

\n

Dans cet article, nous allons analyser un exemple pratique : créer une API pour gérer une liste de tâches (To-Do list). Vous apprendrez à configurer le serveur, à traiter les requêtes GET, POST, PUT et DELETE, ainsi qu'à ajouter une validation de base. À la fin de la lecture, vous aurez un code prêt à être exécuté et testé immédiatement.

\n\n

Étape 1 : Configuration du projet et installation des dépendances

\n

Avant d'écrire du code, il faut préparer l'environnement. Assurez-vous d'avoir installé Node.js (téléchargeable depuis le site officiel). Suivez ensuite les instructions :

\n
    \n
  1. Créez un nouveau dossier pour le projet, par exemple rest-api-todo.
  2. \n
  3. Ouvrez un terminal dans ce dossier et exécutez la commande npm init -y — cela créera le fichier package.json.
  4. \n
  5. Installez Express — le framework le plus populaire pour Node.js : npm install express.
  6. \n
  7. Pour plus de commodité, installez nodemon comme dépendance de développement : npm install --save-dev nodemon. Il redémarrera automatiquement le serveur lors des modifications du code.
  8. \n
\n

Après l'installation, ajoutez un script de lancement dans package.json :

\n
"scripts": {\n  "start": "node index.js",\n  "dev": "nodemon index.js"\n}
\n\n

Étape 2 : Création du serveur de base avec Express

\n

Créons maintenant le fichier index.js — ce sera le point d'entrée de notre application. Nous y configurerons le serveur, connecterons le middleware pour travailler avec JSON et définirons la première route.

\n
const express = require('express');\nconst app = express();\nconst PORT = 3000;\n\n// Middleware pour analyser le JSON\napp.use(express.json());\n\n// Stockage temporaire des données (au lieu d'une base de données)\nlet tasks = [\n    { id: 1, title: 'Apprendre Express', completed: false },\n    { id: 2, title: 'Écrire une API REST', completed: false }\n];\nlet currentId = 3;\n\n// Route de base pour vérification\napp.get('/', (req, res) => {\n    res.send('API REST fonctionne ! Utilisez /api/tasks');\n});\n\n// Démarrage du serveur\napp.listen(PORT, () => {\n    console.log(`Serveur démarré sur http://localhost:${PORT}`);\n});
\n

Lancez le serveur avec la commande npm run dev et ouvrez http://localhost:3000 dans votre navigateur. Vous devriez voir le message "API REST fonctionne !".

\n\n

Étape 3 : Implémentation des opérations CRUD (GET, POST, PUT, DELETE)

\n

Passons maintenant à la partie la plus intéressante — créons une API REST complète pour gérer les tâches. Nous implémenterons quatre méthodes HTTP principales :

\n\n

3.1. GET /api/tasks — récupération de toutes les tâches

\n
// Récupérer toutes les tâches\napp.get('/api/tasks', (req, res) => {\n    res.json(tasks);\n});
\n\n

3.2. GET /api/tasks/:id — récupération d'une tâche par ID

\n
// Récupérer une tâche par ID\napp.get('/api/tasks/:id', (req, res) => {\n    const id = parseInt(req.params.id);\n    const task = tasks.find(t => t.id === id);\n    \n    if (!task) {\n        return res.status(404).json({ message: 'Tâche non trouvée' });\n    }\n    res.json(task);\n});
\n\n

3.3. POST /api/tasks — création d'une nouvelle tâche

\n
// Créer une nouvelle tâche\napp.post('/api/tasks', (req, res) => {\n    const { title, completed } = req.body;\n    \n    // Validation\n    if (!title || typeof title !== 'string') {\n        return res.status(400).json({ message: 'Le titre de la tâche est obligatoire et doit être une chaîne de caractères' });\n    }\n\n    const newTask = {\n        id: currentId++,\n        title: title,\n        completed: completed || false\n    };\n    \n    tasks.push(newTask);\n    res.status(201).json(newTask);\n});
\n\n

3.4. PUT /api/tasks/:id — mise à jour d'une tâche

\n
// Mettre à jour une tâche\napp.put('/api/tasks/:id', (req, res) => {\n    const id = parseInt(req.params.id);\n    const task = tasks.find(t => t.id === id);\n    \n    if (!task) {\n        return res.status(404).json({ message: 'Tâche non trouvée' });\n    }\n    \n    const { title, completed } = req.body;\n    \n    if (title !== undefined) {\n        if (typeof title !== 'string') {\n            return res.status(400).json({ message: 'Le titre doit être une chaîne de caractères' });\n        }\n        task.title = title;\n    }\n    \n    if (completed !== undefined) {\n        if (typeof completed !== 'boolean') {\n            return res.status(400).json({ message: 'Le statut doit être un booléen' });\n        }\n        task.completed = completed;\n    }\n    \n    res.json(task);\n});
\n\n

3.5. DELETE /api/tasks/:id — suppression d'une tâche

\n
// Supprimer une tâche\napp.delete('/api/tasks/:id', (req, res) => {\n    const id = parseInt(req.params.id);\n    const index = tasks.findIndex(t => t.id === id);\n    \n    if (index === -1) {\n        return res.status(404).json({ message: 'Tâche non trouvée' });\n    }\n    \n    tasks.splice(index, 1);\n    res.status(204).send();\n});
\n\n

Étape 4 : Test de l'API

\n

Pour tester l'API, vous pouvez utiliser Postman, Insomnia ou simplement l'extension Thunder Client pour VS Code. Voici quelques exemples de requêtes :

\n
    \n
  • GET http://localhost:3000/api/tasks — récupérer toutes les tâches
  • \n
  • GET http://localhost:3000/api/tasks/1 — récupérer la tâche avec l'ID 1
  • \n
  • POST http://localhost:3000/api/tasks avec le corps JSON {"title": "Nouvelle tâche"} — créer une tâche
  • \n
  • PUT http://localhost:3000/api/tasks/1 avec le corps JSON {"completed": true} — marquer la tâche comme terminée
  • \n
  • DELETE http://localhost:3000/api/tasks/1 — supprimer la tâche
  • \n
\n\n

Conclusion : que faire ensuite ?

\n

Félicitations ! Vous avez créé une API REST fonctionnelle en JavaScript en seulement 30 minutes. Ce guide de base vous donne une base solide pour continuer à apprendre. Voici quelques idées pour aller plus loin :

\n
    \n
  • Ajoutez une vraie base de données (par exemple, MongoDB avec Mongoose ou PostgreSQL avec Sequelize)
  • \n
  • Implémentez l'authentification (JWT, OAuth)
  • \n
  • Ajoutez la pagination et le filtrage des résultats
  • \n
  • Écrivez des tests unitaires et d'intégration
  • \n
  • Déployez l'API sur une plateforme cloud (Heroku, Vercel, AWS)
  • \n
\n

N'oubliez pas que la pratique est la clé du succès en programmation. Expérimentez, cassez des choses et apprenez de vos erreurs. Bonne chance dans votre parcours de développement backend !

Blogs

Book Recommendations