Introduction
Le développement web moderne est impensable sans API REST. C'est le fondement sur lequel reposent les applications mobiles, les fronts SPA et les microservices. Si vous êtes débutant et souhaitez apprendre rapidement à créer un backend, la combinaison TypeScript + Express est un point de départ idéal. TypeScript ajoute un typage strict à JavaScript, rendant le code plus fiable et plus compréhensible, surtout en travail d'équipe.
Dans ce guide, nous allons créer en 30 minutes une API REST complète pour gérer une liste de tâches (Todo list). Vous apprendrez à configurer le projet, décrire les modèles de données, créer des routes et connecter une base de données. Pas de théorie superflue — seulement de la pratique et un code prêt à être exécuté.
Il est supposé que vous avez déjà installé Node.js (version 18+) et npm. Sinon, téléchargez-les depuis le site officiel.
1. Préparation du projet et installation des dépendances
Commençons par initialiser un nouveau projet TypeScript. Ouvrez le terminal et exécutez les commandes :
mkdir my-todo-apicd my-todo-apinpm init -yInstallons maintenant les paquets nécessaires :
npm install expressnpm install -D typescript @types/node @types/express ts-node nodemonCréons le fichier de configuration TypeScript :
npx tsc --initDans le fichier tsconfig.json, assurez-vous que les lignes suivantes sont décommentées et configurées :
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Créez le dossier src et le fichier src/index.ts — ce sera le point d'entrée de notre application.
Ajoutons des scripts dans package.json pour un lancement pratique :
"scripts": { "dev": "nodemon --exec ts-node src/index.ts", "build": "tsc", "start": "node dist/index.js"}2. Création du serveur Express de base
Écrivons maintenant un serveur minimal avec Express qui écoutera sur le port 3000. Ouvrez src/index.ts et ajoutez le code suivant :
import express, { Request, Response } from 'express';
const app = express();const PORT = 3000;
// Middleware pour analyser le JSONapp.use(express.json());
// Route de base pour vérificationapp.get('/', (req: Request, res: Response) => { res.send('Todo API fonctionne !');});
app.listen(PORT, () => { console.log(`Serveur démarré sur http://localhost:${PORT}`);});Lancez le serveur avec la commande npm run dev et ouvrez le navigateur à l'adresse http://localhost:3000. Vous devriez voir le message "Todo API fonctionne !".
3. Définition du modèle de données et stockage en mémoire
Pour simplifier, nous n'allons pas connecter immédiatement une base de données, mais utiliser un stockage temporaire en mémoire vive. Créez le fichier src/models/todo.ts :
export interface Todo { id: number; title: string; completed: boolean; createdAt: Date;}
export let todos: Todo[] = [ { id: 1, title: 'Apprendre TypeScript', completed: false, createdAt: new Date() }, { id: 2, title: 'Écrire une API REST', completed: false, createdAt: new Date() },];Notez l'utilisation de l'interface Todo — cela garantit que tous les objets du tableau ont la même structure.
4. Implémentation des routes CRUD
Créons le fichier src/routes/todos.ts avec des routes complètes pour les opérations Create, Read, Update et Delete.
import { Router, Request, Response } from 'express';import { Todo, todos } from '../models/todo';
const router = Router();
// GET /api/todos — obtenir toutes les tâchesrouter.get('/', (req: Request, res: Response) => { res.