Gérer les réponses et erreurs d’API
Vérifier les codes d’état HTTP, gérer les erreurs et analyser les données des API.
Gérer les réponses et erreurs d’API est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Vérification du code d’état HTTP
Vérifiez toujours le code d’état HTTP avant de traiter le corps de la réponse.
<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
throw new RuntimeException("API error: HTTP $statusCode");
}Analyse de la réponse JSON
Décodez le corps JSON et gérez les erreurs d’analyse.
<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP arrayCorps des réponses d’erreur
Les interfaces de programmation renvoient souvent des détails sur l’erreur dans le corps, même pour les réponses 4xx/5xx. Analysez et journalisez toujours le corps en cas d’erreur.
<?php
if ($statusCode >= 400) {
$err = json_decode($body, true);
$msg = $err["message"] ?? "Unknown API error";
throw new RuntimeException("API $statusCode: $msg");
}Erreurs de transport cURL
Les erreurs réseau (échec DNS, délai d’expiration) sont distinctes des erreurs HTTP. Vérifiez d’abord curl_errno(), puis le code d’état HTTP.
<?php
if (curl_errno($ch)) {
throw new RuntimeException("Transport error: ".curl_error($ch));
}Encapsulation dans une fonction utilitaire
Encapsulez la configuration, l’exécution et la gestion des erreurs de cURL dans une fonction réutilisable.
<?php
function httpGet(string $url, string $token): array {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$errno = curl_errno($ch);
curl_close($ch);
if ($errno) throw new RuntimeException(curl_strerror($errno));
if ($status >= 400) throw new RuntimeException("HTTP $status");
return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}Logique de nouvelle tentative
Pour les erreurs temporaires (503 Service Unavailable, délais d’expiration), mettez en place un temps d’attente exponentiel avec une limite de tentatives.
<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
try {
$data = httpGet($url, $token);
break;
} catch (RuntimeException $e) {
if ($attempt === $maxRetries - 1) throw $e;
sleep(2 ** $attempt);
}
}En-têtes de limitation de débit
De nombreuses interfaces de programmation incluent des en-têtes de limitation de débit : X-RateLimit-Remaining et X-RateLimit-Reset. Lisez-les pour éviter d’atteindre les limites.
<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response stringMise en cache des réponses
Mettez en cache les réponses des interfaces de programmation afin d’éviter les appels réseau redondants. Stockez les réponses dans Redis ou APCu avec un TTL correspondant à l’exigence de fraîcheur des données.
Journalisation des appels d’interface de programmation
Journalisez l’URL de la requête, la méthode, le code d’état et la latence afin de faciliter le débogage et de surveiller l’état de l’interface de programmation en production.
Les délais d’expiration comme erreurs
Un délai d’expiration cURL (CURLE_OPERATION_TIMEDOUT) est une erreur de transport, et non une erreur HTTP. Gérez ce cas explicitement.
Erreurs de certificat SSL
Les échecs de validation du certificat (CURLE_SSL_CACERT) signifient que le certificat du serveur n’est pas approuvé. Mettez à jour votre ensemble de certificats CA ; ne désactivez jamais la vérification.
Résumé
Vérifiez toujours d’abord le code d’erreur cURL, puis le code d’état HTTP. Analysez les corps des réponses d’erreur. Encapsulez la logique dans des fonctions réutilisables. Mettez en place de nouvelles tentatives pour les échecs temporaires.
Vérification rapide
Que devez-vous vérifier en premier : le code d’erreur cURL ou le code d’état HTTP ?
Questions Fréquemment Posées
La leçon « Gérer les réponses et erreurs d’API » est-elle gratuite ?
Oui — le texte complet de « Gérer les réponses et erreurs d’API » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Gérer les réponses et erreurs d’API » ?
Vérifier les codes d’état HTTP, gérer les erreurs et analyser les données des API. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Gérer les réponses et erreurs d’API » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Encoder et décoder du JSON
- Effectuer des requêtes HTTP avec cURL
- Gérer les réponses et erreurs d’API
- Créer un client d’API simple