Creazione di un semplice client API
Racchiudere le chiamate cURL in una classe client API PHP riutilizzabile.
Creazione di un semplice client API è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.
Perché incapsulare cURL?
Una classe client API dedicata centralizza l'autenticazione, l'URL di base, la gestione degli errori e la registrazione, evitando codice boilerplate ripetuto in tutta la codebase.
Struttura di base della classe client
Un client API minimale con un URL di base e un token di autenticazione.
<?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);
}
}Metodi GET e POST
Esponga metodi di comodo che deleghino al metodo privato request().
<?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);
}Utilizzo del client
Istanzialo e chiami metodi tipizzati invece di usare cURL direttamente.
<?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"]);Parametri della stringa di query
Costruisca le stringhe di query con http_build_query().
<?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]);Helper per la paginazione
Aggiunga un helper per raccogliere automaticamente tutte le pagine di un'API paginata.
<?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;
}Memorizzazione nella cache delle risposte
Inietti un livello di cache per evitare richieste ridondanti.
<?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;
}Registrazione
Aggiunga un logger PSR-3 per registrare ogni richiesta e risposta a fini di debug.
<?php
public function __construct(
private string $baseUrl,
private string $token,
private ?\Psr\Log\LoggerInterface $logger = null
) {}Test del client
Nei test unitari, sostituisca cURL con un gestore HTTP simulato, ad esempio Guzzle MockHandler, così i test vengono eseguiti senza chiamate di rete reali.
Guzzle come alternativa
Per l'uso in produzione, valuti Guzzle (composer require guzzlehttp/guzzle), che offre middleware, richieste asincrone e un'API ben rifinita.
Opzione HTTP_FOUNDATION
Symfony HttpClient (symfony/http-client) è un'altra eccellente alternativa, con un'interfaccia pulita e un supporto di prima classe alle richieste asincrone.
Riepilogo
Incapsulare cURL in una classe riduce la duplicazione, centralizza la gestione degli errori e semplifica i test. Esponga metodi tipizzati (get, post) invece di usare direttamente i verbi HTTP.
Verifica rapida
Quale funzione PHP costruisce le stringhe di query degli URL?
Domande Frequenti
La lezione «Creazione di un semplice client API» è gratuita?
Sì — il testo completo di «Creazione di un semplice client API» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.
Cosa imparerò in «Creazione di un semplice client API»?
Racchiudere le chiamate cURL in una classe client API PHP riutilizzabile. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare PHP Academy?
Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Creazione di un semplice client API»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione PHP Academy?
Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Codifica e decodifica JSON
- Richieste HTTP con cURL
- Gestione delle risposte e degli errori delle API
- Creazione di un semplice client API