Comment écrire une API REST en TypeScript en 30 minutes

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

Comment écrire une API REST en TypeScript en 30 minutes : guide pas à pas



Créer une API REST est une tâche fondamentale pour tout développeur backend. L'utilisation de TypeScript ajoute un typage strict, améliore la lisibilité du code et réduit le nombre d'erreurs. Dans cet article, nous allons voir comment écrire une API REST complète en TypeScript à partir de zéro en seulement 30 minutes. Vous découvrirez Express, TypeORM et les meilleures pratiques d'organisation du code.



1. Configuration du projet et installation des dépendances



Commencez par créer un nouveau répertoire et initialisez le projet Node.js :



mkdir my-rest-apicd my-rest-apinpm init -y


Installez les paquets nécessaires :



npm install express reflect-metadata typeorm sqlite3npm install -D typescript @types/node @types/express ts-node nodemon


Créez le fichier tsconfig.json pour la configuration de TypeScript :



{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "experimentalDecorators": true,    "emitDecoratorMetadata": true,    "skipLibCheck": true  },  "include": ["src/**/*"]}


2. Création de la structure de base et du point d'entrée



Organisez la structure des dossiers comme suit :



  • src/ — code principal
  • src/controllers/ — contrôleurs
  • src/entities/ — entités de la base de données
  • src/routes/ — routes


Créez le fichier src/index.ts — point d'entrée de l'application :



import "reflect-metadata";import express from "express";import { AppDataSource } from "./data-source";import { userRoutes } from "./routes/userRoutes";

const app = express();const PORT = process.env.PORT || 3000;

app.use(express.json());

AppDataSource.initialize() .then(() => { console.log("Database connected"); app.use("/api/users", userRoutes); app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); }); }) .catch((error) => console.log(error));


Créez maintenant src/data-source.ts pour la configuration de TypeORM :



import { DataSource } from "typeorm";import { User } from "./entities/User";

export const AppDataSource = new DataSource({ type: "sqlite", database: "database.sqlite", synchronize: true, logging: false, entities: [User],});


3. Définition de l'entité et du contrôleur



Créez le fichier src/entities/User.ts — modèle utilisateur :



import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()export class User { @PrimaryGeneratedColumn() id!: number;

@Column() name!: string;

@Column() email!: string;

@Column({ default: true }) isActive!: boolean;}


Créons maintenant le contrôleur src/controllers/userController.ts :



import { Request, Response } from "express";import { AppDataSource } from "../data-source";import { User } from "../entities/User";

const userRepository = AppDataSource.getRepository(User);

export const getUsers = async (req: Request, res: Response) => { try { const users = await userRepository.find(); res.json(users); } catch (error) { res.status(500).json({ message: "Error fetching users" }); }};

export const getUserById = async (req: Request, res: Response) => { try { const user = await userRepository.findOneBy({ id: parseInt(req.params.id) }); if (!user) { return res.status(404).json({ message: "User not found" }); } res.json(user); } catch (error) { res.status(500).json({ message: "Error fetching user" }); }};

export const createUser = async (req: Request, res: Response) => {

Blogs

Book Recommendations