0Pricing
PHP Academy · Aula

Criação de um cliente de API simples

Envolva chamadas cURL em uma classe de cliente de API PHP reutilizável.

Criação de um cliente de API simples é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Por que encapsular o cURL?

Uma classe cliente de interface de programação de aplicações dedicada centraliza a autenticação, a URL base, o tratamento de erros e o registro, evitando código repetitivo em toda a base de código.

Estrutura básica da classe cliente

Um cliente de interface de programação de aplicações mínimo com uma URL base e um token de autenticação.

<?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 e POST

Disponibilize métodos convenientes que deleguem ao 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);
}

Utilização do cliente

Instancie o cliente e chame métodos tipados em vez de utilizar o cURL diretamente.

<?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 da cadeia de consulta

Construa cadeias de consulta com 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]);

Função auxiliar de paginação

Adicione uma função auxiliar para coletar automaticamente todas as páginas de uma interface de programação de aplicações 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;
}

Armazenamento das respostas em cache

Injete uma camada de armazenamento em cache para evitar solicitações 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

Adicione um registrador PSR-3 para registrar cada solicitação e resposta durante a depuração.

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

Teste do cliente

Nos testes unitários, substitua o cURL por um manipulador HTTP simulado, como o MockHandler do Guzzle, para que os testes sejam executados sem chamadas de rede reais.

Guzzle como alternativa

Para uso em produção, considere o Guzzle (composer require guzzlehttp/guzzle), que fornece middleware, solicitações assíncronas e uma interface refinada.

Opção HTTP_FOUNDATION

O HttpClient do Symfony (symfony/http-client) é outra excelente alternativa, com uma interface simples e suporte assíncrono de primeira classe.

Resumo

Encapsular o cURL em uma classe reduz a duplicação, centraliza o tratamento de erros e facilita os testes. Disponibilize métodos tipados (get, post) em vez de verbos HTTP brutos.

Verificação rápida

Qual função do PHP constrói cadeias de consulta de URL?

Perguntas Frequentes

A aula “Criação de um cliente de API simples” é grátis?

Sim — o texto completo de “Criação de um cliente de API simples” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Criação de um cliente de API simples”?

Envolva chamadas cURL em uma classe de cliente de API PHP reutilizável. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Criação de um cliente de API simples”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Codificação e decodificação JSON
  2. Realização de solicitações HTTP com cURL
  3. Tratamento de respostas e erros de APIs
  4. Criação de um cliente de API simples
← Voltar para PHP Academy