Créer une API Node.js + Prisma + MySQL + Flutter
Créer une API Node.js + Prisma + MySQL + Flutter
-
Objectif
- À la fin de ce cours, l’étudiant sera capable de :
- A – Créer une API professionnelle avec Node.js + Express
- Créer un projet Node.js propre et structuré
- Définir des routes REST API
- Gérer les erreurs et les réponses JSON
- Communiquer avec une base de données MySQL
- B – Utiliser Prisma comme ORM moderne
- Installer et configurer Prisma dans un projet Node.js
- Définir des modèles de données dans un fichier unique
- Générer automatiquement les tables MySQL
- Manipuler les données (insert, update, delete, find…) sans écrire de SQL
- Comprendre le rôle des migrations Prisma
- C – Sécuriser une API
- Hachage de mot de passe (bcrypt)
- Gestion de l’authentification (login)
- Manipulation d’objets JSON (rôles, profil…)
- D – Consommer une API dans Flutter
- Envoyer des requêtes HTTP depuis Flutter
- Gérer la connexion utilisateur (login)
- Naviguer entre les pages après authentification
- Récupérer et afficher des données venant du backend
- E – Réaliser un mini-projet complet
- Backend : API Node.js + Prisma + MySQL
- Frontend : Application Flutter
- Fonctionnalités : inscription, login, profil, affichage des données
-
ORM
- L’Object-Relational Mapping (Mappage Objet-Relationnel) est une technique de programmation qui permet de convertir des données entre des systèmes de types incompatibles : les objets d’un langage de programmation orienté objet (POO) et les tables d’une base de données relationnelle (SGBDR).
- Le Rôle de l’ORM : Il agit comme un traducteur ou un intermédiaire entre votre code (par exemple, Python, Java, PHP) et votre base de données (MySQL, PostgreSQL, etc.).
- L’ORM (Object-Relational Mapping) est un concept fondamental dans le développement moderne d’applications qui relie deux mondes différents :
- Le monde objet (classes, instances, méthodes)
- Le monde relationnel (tables, lignes, colonnes, SQL)
- Un ORM est un outil qui permet de manipuler une base de données comme si c’était des objets, sans écrire de SQL.
- Exemple sans ORM :
- L’utilisateur doit écrire une requête SQL manuelle.
- Exemple avec un ORM :
- Le code est plus simple, plus propre et plus sécurisé.
-
Prisma
-
Présentation
- Prisma est une boîte à outils de base de données (Database Toolkit) moderne et open-source qui inclut un ORM (Object-Relational Mapper) de nouvelle génération pour les applications Node.js et TypeScript.
- Il se distingue des ORM traditionnels par son approche axée sur la sécurité des types (type-safety) et une meilleure expérience développeur (Developer Experience – DX).
-
Les Composants Clés de Prisma
- Prisma n’est pas un simple ORM ; il est composé de trois outils principaux qui travaillent ensemble :
- Prisma Schema (Schéma Prisma)
- C’est le cœur déclaratif de Prisma.
- C’est un fichier unique où vous définissez votre modèle de données de manière intuitive (représentant les tables et leurs relations), ainsi que les sources de données et les générateurs (comme le Client Prisma).
- Exemple de syntaxe (langage de modélisation de données intuitif) :
- Prisma Client
- C’est un constructeur de requêtes (query builder) auto-généré à partir de votre Schéma Prisma.
- Il fournit une API type-safe pour interagir avec votre base de données dans votre code Node.js ou TypeScript. Les requêtes sont vérifiées au moment de la compilation, ce qui réduit les erreurs d’exécution.
- Exemple d’utilisation dans le code :
const user = await prisma.user.findUnique({ where: { email: 'test@example.com' } }); - Prisma Migrate
- C’est un système de migration pour appliquer et suivre les changements de votre schéma de données dans la base de données réelle.
- Il crée des fichiers SQL incrémentiels basés sur les modifications que vous apportez au Schéma Prisma.
SELECT * FROM utilisateurs WHERE id = 1;
const user = await prisma.user.findUnique({ where: { id: 1 } });
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
