API Yanıtlarını ve Hatalarını İşleme
HTTP durum kodlarını kontrol edin, hataları yönetin ve API yüklerini ayrıştırın.
API Yanıtlarını ve Hatalarını İşleme, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
HTTP Durum Kodunu Denetleme
Yanıt gövdesini işlemeden önce her zaman HTTP durum kodunu denetleyin.
<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
throw new RuntimeException("API error: HTTP $statusCode");
}JSON Yanıtını Ayrıştırma
JSON gövdesinin kodunu çözün ve ayrıştırma hatalarını yönetin.
<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP arrayHata Yanıtı Gövdeleri
API'ler, 4xx/5xx yanıtlarında bile hata ayrıntılarını çoğunlukla gövdede döndürür. Hatalarda gövdeyi her zaman ayrıştırıp günlük kaydına ekleyin.
<?php
if ($statusCode >= 400) {
$err = json_decode($body, true);
$msg = $err["message"] ?? "Unknown API error";
throw new RuntimeException("API $statusCode: $msg");
}cURL Aktarım Hataları
Ağ hataları (DNS başarısızlığı, zaman aşımı) HTTP hatalarından ayrıdır. Önce curl_errno() işlevini, ardından HTTP durumunu denetleyin.
<?php
if (curl_errno($ch)) {
throw new RuntimeException("Transport error: ".curl_error($ch));
}Bir Yardımcı İşlevle Sarmalama
cURL kurulumunu, yürütmeyi ve hata yönetimini yeniden kullanılabilir bir işlev içinde kapsülleyin.
<?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);
}Yeniden Deneme Mantığı
Geçici hatalar (503 Service Unavailable, zaman aşımları) için yeniden deneme sınırıyla birlikte üstel geri çekilme uygulayın.
<?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);
}
}Hız Sınırlama Başlıkları
Birçok API, hız sınırlama başlıklarını içerir: X-RateLimit-Remaining ve X-RateLimit-Reset. Sınırlara ulaşmaktan kaçınmak için bunları okuyun.
<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response stringYanıtları Önbelleğe Alma
Gereksiz ağ çağrılarını önlemek için API yanıtlarını önbelleğe alın. Yanıtları, verilerin güncellik gereksinimine uygun bir TTL ile Redis veya APCu'da saklayın.
API Çağrılarını Günlüğe Kaydetme
Hata ayıklamayı kolaylaştırmak ve üretim ortamındaki API sağlığını izlemek için istek URL'sini, yöntemini, durum kodunu ve gecikmesini günlüğe kaydedin.
Hata Olarak Zaman Aşımları
Bir cURL zaman aşımı (CURLE_OPERATION_TIMEDOUT) aktarım hatasıdır, HTTP hatası değildir. Bunu açıkça yönetin.
SSL Sertifikası Hataları
Sertifika doğrulama başarısızlıkları (CURLE_SSL_CACERT), sunucu sertifikasına güvenilmediği anlamına gelir. CA paketinizi güncelleyin; doğrulamayı hiçbir zaman devre dışı bırakmayın.
Özet
Her zaman önce cURL hata numarasını, ardından HTTP durumunu denetleyin. Hata gövdelerini ayrıştırın. Mantığı yeniden kullanılabilir işlevlerle sarmalayın. Geçici başarısızlıklar için yeniden deneme uygulayın.
Hızlı Kontrol
Önce hangisini denetlemelisiniz: cURL hata numarasını mı, HTTP durumunu mu?
Sıkça Sorulan Sorular
“API Yanıtlarını ve Hatalarını İşleme” dersi ücretsiz mi?
Evet — “API Yanıtlarını ve Hatalarını İşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“API Yanıtlarını ve Hatalarını İşleme” dersinde ne öğreneceğim?
HTTP durum kodlarını kontrol edin, hataları yönetin ve API yüklerini ayrıştırın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“API Yanıtlarını ve Hatalarını İşleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JSON Kodlama ve Kod Açma
- cURL ile HTTP İstekleri Gönderme
- API Yanıtlarını ve Hatalarını İşleme
- Basit Bir API İstemcisi Oluşturma