Hantera API-svar och fel
Kontrollera HTTP-statuskoder, hantera fel och tolka API-nyttolaster.
Hantera API-svar och fel är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för PHP Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i PHP Academy innehåller totalt 4 lektioner.
Kontrollera HTTP-statuskoden
Kontrollera alltid HTTP-statuskoden innan Ni bearbetar svarskroppen.
<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
throw new RuntimeException("API error: HTTP $statusCode");
}Tolka JSON-svaret
Avkoda JSON-kroppen och hantera tolkningsfel.
<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP arrayFelkroppar i svar
API:er returnerar ofta feldetaljer i kroppen även för svar med statuskoderna 4xx/5xx. Tolka och logga alltid kroppen vid fel.
<?php
if ($statusCode >= 400) {
$err = json_decode($body, true);
$msg = $err["message"] ?? "Unknown API error";
throw new RuntimeException("API $statusCode: $msg");
}Transportfel i cURL
Nätverksfel (DNS-fel, tidsgränser) är separata från HTTP-fel. Kontrollera curl_errno() först och därefter HTTP-statusen.
<?php
if (curl_errno($ch)) {
throw new RuntimeException("Transport error: ".curl_error($ch));
}Kapsla in i en hjälpfunktion
Kapsla in konfigurering, körning och felhantering för cURL i en återanvändbar funktion.
<?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);
}Försökslogik
För tillfälliga fel (503 Service Unavailable, tidsgränser) bör Ni implementera exponentiell backoff med ett begränsat antal nya försök.
<?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);
}
}Headerfält för hastighetsbegränsning
Många API:er inkluderar headerfält för hastighetsbegränsning: X-RateLimit-Remaining och X-RateLimit-Reset. Läs dem för att undvika att nå gränserna.
<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response stringCachelagring av svar
Cachelagra API-svar för att undvika onödiga nätverksanrop. Lagra svaren i Redis eller APCu med en TTL som motsvarar kraven på hur färska data måste vara.
Logga API-anrop
Logga URL, metod, statuskod och svarstid för att underlätta felsökning och övervaka API:ets hälsa i produktion.
Tidsgränser som fel
En tidsgräns i cURL (CURLE_OPERATION_TIMEDOUT) är ett transportfel, inte ett HTTP-fel. Hantera den uttryckligen.
Fel på SSL-certifikat
Fel vid certifikatvalidering (CURLE_SSL_CACERT) betyder att servercertifikatet inte är betrott. Uppdatera Ert CA-paket och inaktivera aldrig verifieringen.
Sammanfattning
Kontrollera alltid cURL-errno först och därefter HTTP-statusen. Tolka felkroppar. Kapsla in logiken i återanvändbara funktioner. Implementera nya försök för tillfälliga fel.
Snabb kontroll
Vad bör Ni kontrollera först: cURL-errno eller HTTP-statusen?
Lär dig PHP med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 49
- Lektioner
- 195
Vanliga frågor
Är lektionen ”Hantera API-svar och fel” gratis?
Ja – hela texten till ”Hantera API-svar och fel” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i PHP Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i PHP Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Hantera API-svar och fel”?
Kontrollera HTTP-statuskoder, hantera fel och tolka API-nyttolaster. Ni övar på PHP Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig PHP Academy?
Du behöver inga förkunskaper. Utbildningen i PHP Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Hantera API-svar och fel”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här PHP Academy-lektionen?
Ja. Varje PHP Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Koda och avkoda JSON
- Skicka HTTP-förfrågningar med cURL
- Hantera API-svar och fel
- Bygga en enkel API-klient