Table des matières
1. Introduction aux APIs
🔹 Qu'est-ce qu'une API ?
Une API (Application Programming Interface) est une interface qui permet à deux programmes ou systèmes différents de communiquer entre eux.
C'est comme un pont entre deux logiciels : l'un envoie une demande (requête) et l'autre renvoie une réponse.
🧠 Exemple concret :
Imagine que tu es dans un restaurant 🍽️
Tu es le client (l'application e-commerce)
Le serveur est l'API
La cuisine est le serveur distant (par exemple : la société de livraison)
Tu passes ta commande au serveur → il la transmet à la cuisine → la cuisine prépare le plat → le serveur te ramène le résultat.
C'est exactement ce que fait une API entre deux systèmes informatiques.
💻 Exemple en PHP :
// Exemple : notre plateforme envoie la commande à une société de livraison
$shipping_result = handleShippingCompanyNotification(
$db, $order, 'confirmed', $user_id
);
✅ À retenir :
- Une API permet l'échange de données entre applications
- Les échanges se font via des requêtes HTTP (GET, POST, PUT, DELETE)
- Les données sont souvent au format JSON
- C'est la base de toute intégration entre systèmes externes
2. Structure de base d'une API
Une API doit être claire, sécurisée et cohérente.
Chaque requête doit indiquer :
- Le type de contenu envoyé ou reçu
- Les méthodes autorisées
- Les origines autorisées (CORS)
💻 Exemple en PHP :
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
🧩 Explication :
- Content-Type: application/json → indique que les données sont en JSON
- Access-Control-Allow-Origin → permet d'autoriser d'autres sites à appeler ton API
- Access-Control-Allow-Methods → autorise certaines actions (POST, GET…)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit;
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée']);
exit;
}
🧩 Codes de statut HTTP les plus utilisés :
| Code | Signification | Description |
|---|---|---|
| 200 | Succès | La requête a réussi |
| 400 | Mauvaise requête | La syntaxe de la requête est incorrecte |
| 401 | Non autorisé | Authentification requise |
| 404 | Non trouvé | Ressource introuvable |
| 405 | Méthode non autorisée | Méthode HTTP non supportée |
| 500 | Erreur serveur | Erreur interne du serveur |
3. Authentification & Autorisation
Avant d'autoriser une action, ton API doit vérifier l'identité de l'utilisateur.
$user_id = getCurrentUserId($db);
if (!$user_id) {
throw new Exception('Utilisateur non authentifié');
}
🔐 Principes de sécurité :
- Toujours vérifier la session ou le token
- Ne jamais exposer d'informations sensibles
- S'assurer que l'utilisateur possède bien la ressource (ex : sa propre commande)
💻 Requête SQL sécurisée :
$order = $db->getThisQuery("
SELECT o.*, s.platform, s.api_url, s.api_key
FROM orders o
JOIN stores s ON o.store_id = s.id
WHERE o.id = ? AND o.user_id = ?
", [$order_id, $user_id]);
✅ Bonnes pratiques :
- Utiliser des requêtes préparées (évite les injections SQL)
- Ne jamais passer directement des données utilisateurs dans une requête SQL
- Toujours filtrer et valider les entrées
- Utiliser des tokens d'authentification sécurisés
- Limiter le taux de requêtes (rate limiting)