Basit Bir API İstemcisi Oluşturma
cURL çağrılarını yeniden kullanılabilir bir PHP API istemcisi sınıfında kapsülleyin.
Basit Bir API İstemcisi Oluşturma, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. 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.
cURL'yi Neden Sarmalamalısınız?
Ayrı bir API istemcisi sınıfı, kimlik doğrulamayı, temel URL'yi, hata yönetimini ve günlük kaydını merkezileştirir; böylece kod tabanındaki tekrarlanan gereksiz kodlar önlenir.
İstemci Sınıfı İskeleti
Temel URL ve kimlik doğrulama belirteci içeren en küçük API istemcisi.
<?php
class ApiClient {
public function __construct(
private string $baseUrl,
private string $token
) {}
private function request(string $method, string $path, array $data = []): array {
$ch = curl_init($this->baseUrl.$path);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer ".$this->token,
"Content-Type: application/json",
"Accept: application/json",
],
]);
if (!empty($data)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) throw new RuntimeException("API error $status: $body");
return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}
}GET ve POST Yöntemleri
Özel request() yöntemine devreden kolaylık yöntemleri sunun.
<?php
public function get(string $path): array {
return $this->request("GET", $path);
}
public function post(string $path, array $body): array {
return $this->request("POST", $path, $body);
}İstemciyi Kullanma
Ham cURL kullanmak yerine istemciyi örnekleyin ve türü belirlenmiş yöntemleri çağırın.
<?php
$client = new ApiClient("https://api.example.com", $apiToken);
$users = $client->get("/v1/users");
$user = $client->post("/v1/users", ["name" => "Alice", "email" => "alice@example.com"]);Sorgu Dizesi Parametreleri
Sorgu dizelerini http_build_query() ile oluşturun.
<?php
public function get(string $path, array $params = []): array {
$qs = $params ? "?".http_build_query($params) : "";
return $this->request("GET", $path.$qs);
}
// Usage:
$users = $client->get("/v1/users", ["page" => 1, "limit" => 20]);Sayfalandırma Yardımcısı
Sayfalandırılmış bir API'nin tüm sayfalarını otomatik olarak toplamak için bir yardımcı ekleyin.
<?php
public function paginate(string $path): array {
$all = [];
$page = 1;
do {
$res = $this->get($path, ["page" => $page++]);
$all = array_merge($all, $res["data"]);
} while ($res["has_more"] ?? false);
return $all;
}Yanıtları Önbelleğe Alma
Gereksiz istekleri önlemek için bir önbellek katmanı ekleyin.
<?php
public function getCached(string $path, int $ttl = 60): array {
$key = "api:".md5($path);
if (apcu_exists($key)) return apcu_fetch($key);
$data = $this->get($path);
apcu_store($key, $data, $ttl);
return $data;
}Günlük Kaydı
Hata ayıklama amacıyla her isteği ve yanıtı kaydetmek üzere bir PSR-3 günlükçüsü ekleyin.
<?php
public function __construct(
private string $baseUrl,
private string $token,
private ?\Psr\Log\LoggerInterface $logger = null
) {}İstemciyi Sınama
Birleşim sınamalarında, sınamaların gerçek ağ çağrıları olmadan çalışması için cURL'yi sahte bir HTTP işleyicisiyle (ör. Guzzle MockHandler) değiştirin.
Alternatif Olarak Guzzle
Üretim kullanımı için ara yazılım, eşzamansız istekler ve özenli bir API sağlayan Guzzle'ı (composer require guzzlehttp/guzzle) değerlendirin.
HTTP_FOUNDATION Seçeneği
Symfony HttpClient (symfony/http-client), temiz bir arayüze ve birinci sınıf eşzamansız desteğe sahip başka bir mükemmel alternatiftir.
Özet
cURL'yi bir sınıf içinde sarmalamak tekrarları azaltır, hata yönetimini merkezileştirir ve sınamayı kolaylaştırır. Ham HTTP fiilleri yerine türü belirlenmiş yöntemler (get, post) sunun.
Hızlı Kontrol
URL sorgu dizelerini hangi PHP işlevi oluşturur?
Sıkça Sorulan Sorular
“Basit Bir API İstemcisi Oluşturma” dersi ücretsiz mi?
Evet — “Basit Bir API İstemcisi Oluşturma” 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.
“Basit Bir API İstemcisi Oluşturma” dersinde ne öğreneceğim?
cURL çağrılarını yeniden kullanılabilir bir PHP API istemcisi sınıfında kapsülleyin. 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 4. dersidir.
“Basit Bir API İstemcisi Oluşturma” 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