0Pricing
PHP Academy · Lección

Construcción de un cliente de API sencillo

Agrupe llamadas cURL en una clase de cliente de API PHP reutilizable.

Construcción de un cliente de API sencillo es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

¿Por qué encapsular cURL?

Una clase de cliente de API dedicada centraliza la autenticación, la URL base, la gestión de errores y el registro, y evita repetir código repetitivo en toda la base de código.

Esqueleto de la clase cliente

Un cliente de API mínimo con una URL base y un token de autenticación.

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

Métodos GET y POST

Exponga métodos de conveniencia que deleguen en el método privado 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);
}

Uso del cliente

Instancie el cliente y llame a métodos con tipos en lugar de utilizar cURL directamente.

<?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"]);

Parámetros de cadena de consulta

Construya cadenas de consulta 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]);

Auxiliar de paginación

Añada un auxiliar que recopile automáticamente todas las páginas de una API paginada.

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

Almacenamiento en caché de respuestas

Inyecte una capa de caché para evitar solicitudes redundantes.

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

Registro

Añada un logger PSR-3 para registrar cada solicitud y respuesta con fines de depuración.

<?php
public function __construct(
    private string $baseUrl,
    private string $token,
    private ?\Psr\Log\LoggerInterface $logger = null
) {}

Pruebas del cliente

En las pruebas unitarias, sustituya cURL por un controlador HTTP simulado (por ejemplo, Guzzle MockHandler) para que las pruebas se ejecuten sin llamadas de red reales.

Guzzle como alternativa

Para uso en producción, considere Guzzle (composer require guzzlehttp/guzzle), que proporciona middleware, solicitudes asíncronas y una API pulida.

Opción HTTP_FOUNDATION

Symfony HttpClient (symfony/http-client) es otra excelente alternativa, con una interfaz limpia y compatibilidad asíncrona de primer nivel.

Resumen

Encapsular cURL en una clase reduce la duplicación, centraliza la gestión de errores y facilita las pruebas. Exponga métodos con tipos (get, post) en lugar de verbos HTTP sin procesar.

Comprobación rápida

¿Qué función de PHP construye cadenas de consulta para URL?

Preguntas frecuentes

¿La lección «Construcción de un cliente de API sencillo» es gratis?

Sí — el texto completo de «Construcción de un cliente de API sencillo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Construcción de un cliente de API sencillo»?

Agrupe llamadas cURL en una clase de cliente de API PHP reutilizable. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Construcción de un cliente de API sencillo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Codificación y decodificación JSON
  2. Realización de solicitudes HTTP con cURL
  3. Gestión de respuestas y errores de API
  4. Construcción de un cliente de API sencillo
← Volver a PHP Academy