PHP Academy · leksjon

Håndtere API-svar og feil

Kontroller HTTP-statuskoder, håndter feil og analyser API-nyttelaster.

Leksjon 3 av 413 trinn

Håndtere API-svar og feil er en gratis leksjon i PHP Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i PHP Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Kontroller HTTP-statuskoden

Kontroller alltid HTTP-statuskoden før du behandler svarteksten.

<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
    throw new RuntimeException("API error: HTTP $statusCode");
}

Parse JSON-svaret

Dekod JSON-teksten og håndter feil ved parsing.

<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP array

Feilsvartekster

API-er returnerer ofte feildetaljer i svarteksten, også for svar med statuskodene 4xx og 5xx. Pars og logg alltid svarteksten ved feil.

<?php
if ($statusCode >= 400) {
    $err = json_decode($body, true);
    $msg = $err["message"] ?? "Unknown API error";
    throw new RuntimeException("API $statusCode: $msg");
}

cURL-transportfeil

Nettverksfeil (DNS-feil, tidsavbrudd) er forskjellige fra HTTP-feil. Kontroller curl_errno() først og deretter HTTP-statusen.

<?php
if (curl_errno($ch)) {
    throw new RuntimeException("Transport error: ".curl_error($ch));
}

Pakke inn i en hjelpefunksjon

Samle oppsett av cURL, kjøring og feilhåndtering i en gjenbrukbar funksjon.

<?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);
}

Logikk for nye forsøk

For midlertidige feil (503 Service Unavailable, tidsavbrudd) bør du implementere eksponentiell tilbakeføring med en grense for antall nye forsø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);
    }
}

Topptekster for hastighetsbegrensning

Mange API-er inkluderer topptekster for hastighetsbegrensning: X-RateLimit-Remaining og X-RateLimit-Reset. Les dem for å unngå å nå grensene.

<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response string

Bufring av svar

Bufre API-svar for å unngå overflødige nettverkskall. Lagre svarene i Redis eller APCu med en TTL som samsvarer med kravet til hvor ferske dataene må være.

Logging av API-kall

Logg URL, metode, statuskode og ventetid for å lette feilsøking og overvåke API-ets tilstand i produksjon.

Tidsavbrudd som feil

Et cURL-tidsavbrudd (CURLE_OPERATION_TIMEDOUT) er en transportfeil, ikke en HTTP-feil. Håndter det uttrykkelig.

SSL-sertifikatfeil

Feil ved sertifikatvalidering (CURLE_SSL_CACERT) betyr at serverens sertifikat ikke er klarert. Oppdater CA-pakken din, og deaktiver aldri verifiseringen.

Sammendrag

Kontroller alltid cURL-feilkoden først og deretter HTTP-statusen. Pars feilsvartekster. Pakk logikken inn i gjenbrukbare funksjoner. Implementer nye forsøk for midlertidige feil.

Hurtigsjekk

Hva bør du kontrollere først: cURL-feilkoden eller HTTP-statusen?

Gratis å komme i gang

Lær deg PHP med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
49
Leksjoner
195

Ofte stilte spørsmål

Er leksjonen «Håndtere API-svar og feil» gratis?

Ja – hele teksten i «Håndtere API-svar og feil» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av PHP Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Håndtere API-svar og feil»?

Kontroller HTTP-statuskoder, håndter feil og analyser API-nyttelaster. Du øver på PHP Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med PHP Academy?

Ingen tidligere erfaring er nødvendig. PHP Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Håndtere API-svar og feil»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne PHP Academy-leksjonen?

Ja. Alle PHP Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. JSON-koding og -dekoding
  2. Sende HTTP-forespørsler med cURL
  3. Håndtere API-svar og feil
  4. Bygge en enkel API-klient
← Tilbake til PHP Academy