COURS COMPLET
API REST & POSTMAN
Guide Ultra Simple pour Débutants
■ Programme du cours :
• Les 4 méthodes HTTP (GET, POST, PUT, DELETE)
• Authentification & Tokens JWT
• Le Body JSON
• Comprendre les URLs
• 7 Exercices pratiques avec corrections
■■ Durée : 2-3 heures de lecture et pratique
■ Date : 30/12/2025
■ TABLE DES MATIÈRES
Partie 1 Les Bases des API 3
• C'est quoi une API ? 3
• Les 4 méthodes HTTP 4
Partie 2 Authentification & Tokens 9
• C'est quoi un token ? 9
• Les rôles et autorisation 10
Partie 3 Le Body (Corps de requête) 12
• Format JSON 13
Partie 4 Comprendre les URLs 14
• Structure d'une URL 14
• Paramètres 15
Partie 5 Exercices Pratiques 17
• 7 exercices avec corrections 17-25
• Résumé final 26
■ PARTIE 1 : LES BASES DES API
■ C'est quoi une API ?
Imaginez un restaurant. Vous êtes le client, le serveur prend votre commande et la transmet à la
cuisine qui prépare votre plat.
VOUS (Client) → SERVEUR → CUISINE (Base de données)
(API)
• Vous = Application mobile ou web
• Serveur (API) = L'intermédiaire qui transmet vos demandes
• Cuisine = Base de données où sont stockées les informations
L'API est comme le serveur du restaurant : vous donnez votre commande (requête), le serveur
transmet à la cuisine, la cuisine prépare, et le serveur vous apporte le plat (réponse).
■ LES 4 MÉTHODES HTTP
Les méthodes HTTP sont comme des verbes qui indiquent ce que vous voulez faire. Il y en a 4
principales :
Méthode Action Emoji Exemple
GET LIRE / VOIR ■ Voir le menu
POST CRÉER / AJOUTER ■ Commander un plat
PUT MODIFIER ✏■ Changer mon plat
DELETE SUPPRIMER ■■ Annuler ma commande
1. GET = DEMANDER / LIRE ■
C'est comme : "Montre-moi le menu"
GET est utilisé pour récupérer des données sans rien modifier. C'est l'action la plus simple et la
plus sûre.
Exemples :
GET /api/users → Donne-moi la liste de tous les utilisateurs
GET /api/users/123 → Donne-moi l'utilisateur numéro 123
GET /api/rides?status=pending → Donne-moi les courses en attente
■ Caractéristiques :
• Pas de Body (pas besoin d'envoyer de données)
• Juste demander et recevoir
• Ne modifie rien dans la base de données
• Peut être mis en cache
• Peut être sauvegardé dans les favoris
Exemple réel :
Vous : "Montre-moi mon profil"
API : Voici vos informations (nom, email, téléphone, photo)
2. POST = CRÉER / AJOUTER ■
C'est comme : "Je veux commander un plat"
POST est utilisé pour créer quelque chose de nouveau. Vous envoyez des données et le
serveur crée une nouvelle ressource.
Exemples :
POST /api/users → Créer un nouvel utilisateur
POST /api/rides → Créer une nouvelle course
POST /api/auth/login → Se connecter (créer une session)
■ Caractéristiques :
• Avec Body (vous envoyez les données à créer)
• Crée quelque chose de nouveau dans la base de données
• Retourne souvent status 201 Created
• Retourne généralement l'objet créé avec son nouvel ID
Exemple réel :
Vous : "Je veux créer un compte"
Vous envoyez : { nom: "Abdou", email: "abdou@[Link]", password: "secret" }
API : OK, compte créé ! Voici votre ID: 123 et votre token d'authentification
3. PUT = MODIFIER / METTRE À JOUR ✏■
C'est comme : "Je veux changer mon plat"
PUT est utilisé pour modifier quelque chose qui existe déjà. Vous envoyez les nouvelles
données pour remplacer les anciennes.
Exemples :
PUT /api/users/123 → Modifier l'utilisateur 123
PUT /api/rides/456/accept → Accepter la course 456 (modifier son statut)
PUT /api/users/profile → Modifier mon profil
■ Caractéristiques :
• Avec Body (nouvelles données à appliquer)
• Modifie quelque chose qui existe déjà
• Retourne status 200 OK
• Si la ressource n'existe pas, peut retourner 404 Not Found
Exemple réel :
Vous : "Je veux changer mon numéro de téléphone"
Vous envoyez : { phone: "+221771234567" }
API : OK, téléphone modifié avec succès !
4. DELETE = SUPPRIMER ■■
C'est comme : "Annule ma commande"
DELETE est utilisé pour supprimer définitivement une ressource de la base de données.
Exemples :
DELETE /api/users/123 → Supprimer l'utilisateur 123
DELETE /api/rides/456 → Supprimer la course 456
DELETE /api/auth/delete-account → Supprimer mon compte
■ Caractéristiques :
• Généralement sans Body
• Supprime définitivement (irréversible)
• Retourne status 200 OK ou 204 No Content
• Si la ressource n'existe pas, retourne 404 Not Found
■■ ATTENTION : DELETE est irréversible ! Une fois supprimé, c'est définitif. Beaucoup
d'applications utilisent plutôt une "suppression douce" (soft delete) qui marque juste l'élément
comme supprimé sans vraiment l'effacer.
■ RÉSUMÉ VISUEL DES 4 MÉTHODES
GET = ■ VOIR / LIRE (pas de changement)
POST = ■ CRÉER (nouveau)
PUT = ✏■ MODIFIER (existant)
DELETE = ■■ SUPPRIMER (définitif)
■ PARTIE 2 : AUTHENTIFICATION & TOKENS
■ C'est quoi un TOKEN ?
Un token est comme une carte d'identité numérique. Imaginez que vous allez à un concert :
Sans billet → Vous ne pouvez pas entrer
Avec billet → Vous pouvez entrer et le contrôleur sait qui vous êtes
Le TOKEN c'est pareil ! C'est votre billet d'entrée pour utiliser l'API.
■ Comment ça marche ?
ÉTAPE 1 : LOGIN (Obtenir le token)
Vous envoyez vos identifiants (téléphone + mot de passe) à l'API :
POST /api/auth/login
Body: {
"phone": "+221771234567",
"password": "secret123"
}
Réponse:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
C'est comme : Vous montrez votre passeport à l'entrée → On vous donne un badge visiteur.
ÉTAPE 2 : UTILISER LE TOKEN
Pour toutes les requêtes suivantes, vous envoyez le token dans le header "Authorization" :
GET /api/users/profile
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
→ API vérifie le token
→ API sait que c'est VOUS
→ API vous donne VOS données personnelles
C'est comme : Vous montrez votre badge à chaque porte que vous voulez franchir.
■ LES RÔLES (Authorization)
Dans MABA MOTO, il y a 3 types d'utilisateurs avec des permissions différentes :
Rôle Qui ? Peut faire quoi ?
CLIENT Passager • Créer des courses
(user) • Voir son historique
• Noter les chauffeurs
CHAUFFEUR Motard • Accepter des courses
(driver) • Démarrer/Terminer courses
• Voir ses gains
ADMIN Administrateur • Tout faire
• Gérer les users et drivers
• Faire des remboursements
Exemple concret :
Un CLIENT essaie : GET /api/drivers/profile
→ ■ ERREUR 403 Forbidden (Tu n'as pas le droit ! Tu n'es pas un chauffeur)
Un CHAUFFEUR essaie : GET /api/drivers/profile
→ ■ OK 200 (Voici ton profil de chauffeur)
■ CODES D'ERREUR D'AUTORISATION
401 Unauthorized = "Qui es-tu ?" (pas de token ou token invalide)
403 Forbidden = "Je sais qui tu es, mais tu n'as pas le droit !" (mauvais rôle)
200 OK = "Bienvenue, voici tes données !" (tout est bon)
■ PARTIE 3 : LE BODY (Corps de la requête)
Le Body (corps) est la lettre que vous envoyez avec votre demande. C'est là que vous mettez
toutes les informations nécessaires.
■ QUAND UTILISER LE BODY ?
GET → ■ PAS de body (juste demander)
POST → ■ AVEC body (donner des infos pour créer)
PUT → ■ AVEC body (donner les nouvelles infos)
DELETE → ■ Généralement PAS de body
■ FORMAT DU BODY : JSON
Le Body est toujours au format JSON (JavaScript Object Notation). C'est un format standard
pour échanger des données.
{
"cle": "valeur",
"nom": "Abdou",
"age": 25,
"actif": true,
"hobbies": ["foot", "musique"],
"adresse": {
"ville": "Dakar",
"pays": "Senegal"
}
}
Types de données JSON :
• String (texte) : "Abdou" (entre guillemets)
• Number (nombre) : 25, 3.14 (sans guillemets)
• Boolean : true ou false (sans guillemets)
• Array (liste) : ["item1", "item2"]
• Object (objet) : { "cle": "valeur" }
• null : valeur vide
Exemples concrets de Body
Exemple 1 : S'inscrire
POST /api/auth/register
{
"first_name": "Abdou",
"last_name": "Sow",
"phone": "+221771234567",
"email": "abdou@[Link]",
"password": "secure123"
}
Exemple 2 : Créer une course
POST /api/rides
{
"ride_type": "passenger",
"vehicle_type": "jakarta",
"pickup_address": "Plateau, Dakar",
"pickup_latitude": 14.6928,
"pickup_longitude": -17.4467,
"destination_address": "Almadies",
"destination_latitude": 14.7392,
"destination_longitude": -17.5172,
"payment_method": "cash"
}
■ PARTIE 4 : COMPRENDRE LES URLS
■ STRUCTURE D'UNE URL API
[Link]
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
BASE URL ■ PATH ID
Préfixe
Décomposition :
1. [Link] = Base URL (adresse du serveur)
2. /api = Préfixe (toutes les routes commencent par /api)
3. /users = Ressource (vous parlez des utilisateurs)
4. /123 = ID spécifique (l'utilisateur numéro 123)
■ TYPES D'URLS
■ COLLECTION (Plusieurs éléments)
GET /api/users → Tous les utilisateurs
GET /api/rides → Toutes les courses
GET /api/drivers → Tous les chauffeurs
■ ÉLÉMENT UNIQUE
GET /api/users/123 → Utilisateur numéro 123
GET /api/rides/456 → Course numéro 456
GET /api/drivers/789 → Chauffeur numéro 789
■■ ACTIONS (Faire quelque chose)
PUT /api/rides/456/accept → Accepter la course 456
PUT /api/rides/456/start → Démarrer la course 456
PUT /api/rides/456/complete → Terminer la course 456
■ LES PARAMÈTRES
1. PARAMÈTRES DE ROUTE (dans le chemin)
/api/users/:id
↑
Remplacé par le vrai ID
Exemple : /api/users/123
2. QUERY PARAMETERS (après le ?)
/api/drivers/nearby?latitude=14.69&longitude;=-17.44&radius;=10
↑
Paramètres optionnels
Équivalent à :
• latitude = 14.69
• longitude = -17.44
• radius = 10
Autre exemple :
/api/rides?status=pending&limit;=20
Signifie : Donne-moi les courses où status=pending, maximum 20 résultats
■ RÈGLES DES URLS (Pattern)
■ BONNES PRATIQUES
• Ressources au pluriel : /api/users (pas /api/user)
• Actions en anglais : /accept (pas /accepter)
• Tout en minuscules : /api/users (pas /api/Users)
• Utiliser - pour séparer : /user-profile (pas /user_profile)
• Pas de slash à la fin : /api/users (pas /api/users/)
■ BON ■ MAUVAIS
/api/users /api/user
/api/rides/123/accept /api/rides/123/accepter
/api/drivers/nearby /api/Drivers/Nearby
/api/user-profile /api/user_profile
■ PARTIE 5 : EXERCICES PRATIQUES
Il est temps de mettre en pratique tout ce que vous avez appris ! Voici 7 exercices avec leurs
corrections détaillées.
✏■ EXERCICE 1 : Identifier la méthode HTTP
Pour chaque action, identifiez la bonne méthode (GET, POST, PUT ou DELETE) :
1. Voir la liste de tous les chauffeurs
2. Créer un nouveau compte
3. Modifier mon numéro de téléphone
4. Supprimer mon compte
5. Voir les détails d'une course
6. Créer une nouvelle course
7. Accepter une course (chauffeur)
8. Voir mes statistiques
✏■ EXERCICE 2 : Construire l'URL complète
Base URL : [Link]
Écrivez l'URL complète pour chaque action :
1. Voir tous les utilisateurs
2. Voir l'utilisateur ID 456
3. Voir les courses en attente (status=pending)
4. Chauffeurs dans un rayon de 5km autour de (14.69, -17.44)
5. Accepter la course ID 789
✏■ EXERCICE 3 : Body ou pas Body ?
Pour chaque requête, dites si elle a besoin d'un Body (OUI ou NON) :
1. GET /api/users/profile
2. POST /api/auth/register
3. GET /api/rides?status=completed
4. PUT /api/users/profile
5. DELETE /api/users/123
6. POST /api/rides
7. GET /api/drivers/nearby?radius=10
✏■ EXERCICE 4 : Écrire le Body JSON
Question 1 : S'inscrire
POST /api/auth/register
Écrivez le Body JSON avec :
• Prénom : Fatou
• Nom : Diop
• Téléphone : +221771234567
• Email : fatou@[Link]
• Mot de passe : secure123
Question 2 : Créer une course
POST /api/rides
Écrivez le Body JSON avec :
• Type de course : passager
• Type de véhicule : jakarta
• Adresse départ : Plateau, Dakar
• Latitude départ : 14.6928
• Longitude départ : -17.4467
• Adresse arrivée : Almadies, Dakar
• Latitude arrivée : 14.7392
• Longitude arrivée : -17.5172
• Méthode paiement : cash
✏■ EXERCICE 5 : Token & Autorisation
Pour chaque situation, dites le résultat : 200 OK, 401 Unauthorized, ou 403 Forbidden
1. GET /api/users/profile SANS token
2. GET /api/drivers/profile AVEC token USER (client)
3. GET /api/drivers/profile AVEC token DRIVER
4. POST /api/rides AVEC token USER valide
5. PUT /api/rides/123/accept AVEC token DRIVER
✏■ EXERCICE 6 : Scénario Complet
Mettez dans l'ordre les étapes pour créer et terminer une course :
A. Driver démarre la course
B. Client crée une course
C. Client se connecte (login)
D. Driver termine la course
E. Driver accepte la course
F. Driver se connecte (login)
G. Client note le driver
Ordre correct : ? → ? → ? → ? → ? → ? → ?
✏■ EXERCICE 7 : Debugger les Erreurs
Erreur 1
POST /api/auth/register
Body : { "first_name": "Abdou", "phone": "+221771234567" }
Résultat : 400 Bad Request
Problème : ?
Erreur 2
GET /api/drivers/profile
Résultat : 401 Unauthorized
Problème : ?
Erreur 3
PUT /api/rides/123/start
Token : DRIVER (valide)
Résultat : 400 Bad Request
Message : "La course doit être acceptée avant de démarrer"
Problème : ?
■ CORRECTIONS DES EXERCICES
EXERCICE 1 - Réponses :
1. GET (juste voir, pas modifier)
2. POST (créer quelque chose de nouveau)
3. PUT (modifier quelque chose qui existe)
4. DELETE (supprimer)
5. GET (juste voir les détails)
6. POST (créer une nouvelle course)
7. PUT (modifier le statut de la course)
8. GET (juste voir les statistiques)
EXERCICE 2 - Réponses :
1. [Link]
2. [Link]
3. [Link]
4. [Link]
dius;=5
5. [Link]
EXERCICE 3 - Réponses :
1. NON GET n'a jamais de body
2. OUI POST pour créer → envoyer données
3. NON GET avec query params, pas de body
4. OUI PUT pour modifier → nouvelles données
5. NON DELETE, généralement pas de body
6. OUI POST pour créer course → données course
7. NON GET avec query params
EXERCICE 4 - Réponses :
Question 1 : S'inscrire
{
"first_name": "Fatou",
"last_name": "Diop",
"phone": "+221771234567",
"email": "fatou@[Link]",
"password": "secure123"
}
Question 2 : Créer une course
{
"ride_type": "passenger",
"vehicle_type": "jakarta",
"pickup_address": "Plateau, Dakar",
"pickup_latitude": 14.6928,
"pickup_longitude": -17.4467,
"destination_address": "Almadies, Dakar",
"destination_latitude": 14.7392,
"destination_longitude": -17.5172,
"payment_method": "cash"
}
EXERCICE 5 - Réponses :
1. 401 Unauthorized Pas de token
2. 403 Forbidden Mauvais rôle (client, pas driver)
3. 200 OK Bon token, bon rôle
4. 201 Created User peut créer des courses
5. 200 OK Driver peut accepter des courses
EXERCICE 6 - Réponse :
Ordre correct : C → B → F → E → A → D → G
Explication détaillée :
C. Client se connecte (obtient son token)
B. Client crée une course (avec son token)
F. Driver se connecte (obtient son token driver)
E. Driver accepte la course (status: accepted)
A. Driver démarre la course (status: in_progress)
D. Driver termine la course (status: completed)
G. Client note le driver (rating)
EXERCICE 7 - Réponses :
Erreur 1 :
Problème : Email et password manquants dans le Body
Solution : Ajouter "email" et "password" dans le Body JSON
Erreur 2 :
Problème : Token manquant ou invalide
Solution : Ajouter "Authorization: Bearer {token}" dans les headers
Erreur 3 :
Problème : La course n'a pas été acceptée avant d'être démarrée
Solution : D'abord faire PUT /api/rides/123/accept, PUIS /api/rides/123/start
■ RÉSUMÉ FINAL
LES 4 MÉTHODES HTTP
GET = ■ VOIR / LIRE (pas de body, pas de changement)
POST = ■ CRÉER (avec body, nouveau)
PUT = ✏■ MODIFIER (avec body, existant)
DELETE = ■■ SUPPRIMER (généralement pas de body, définitif)
AUTHENTIFICATION
TOKEN = ■ Carte d'identité (dans Authorization: Bearer {token})
401 = "Qui es-tu ?" (pas de token)
403 = "Tu n'as pas le droit !" (mauvais rôle)
AUTRES CONCEPTS
BODY = ■ Données à envoyer (format JSON)
URL = ■ Adresse de la ressource ([Link]
JSON = { "cle": "valeur" } (format standard)
■ FÉLICITATIONS !
Vous avez terminé ce cours complet sur les API REST ! Vous savez maintenant :
■ Comment fonctionnent les 4 méthodes HTTP
■ Comment utiliser les tokens pour l'authentification
■ Comment structurer un Body JSON
■ Comment construire des URLs correctes
■ Comment débugger les erreurs courantes
Prochaine étape : Pratiquez avec Postman sur votre API MABA MOTO !
Utilisez le document "EXERCICES_POSTMAN_MABA_MOTO.pdf" pour vous entraîner.