APIs públicas com PHP

Por: Nerd Toolkit Postado em: Março 25, 2025 Visto por: 510

A seguir, veremos o passo a passo sobre como criar um formulário que recebe dados do usuário e, em seguida, utiliza esses dados para fazer uma consulta a uma API pública usando PHP. Usaremos como exemplo a API do ViaCEP, que consulta informações de endereço a partir do CEP informado pelo usuário.


1. Estrutura Geral do Projeto

Você precisará de, pelo menos, dois arquivos:

  • index.php: Contém o formulário onde o usuário informa os dados (neste caso, o CEP).

  • consulta.php: Recebe os dados do formulário, faz a consulta na API e exibe o resultado.


2. Criando o Formulário (index.php)

Crie um arquivo index.php com o seguinte conteúdo:

 
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Consulta de CEP</title>
</head>
<body>
    <h1>Consulta de CEP</h1>
    <form method="post" action="consulta.php">
        <label for="cep">Informe o CEP:</label>
        <input type="text" name="cep" id="cep" required>
        <button type="submit">Consultar</button>
    </form>
</body>
</html>

Explicação:
Esse formulário simples envia o valor do campo "cep" via método POST para o arquivo consulta.php.


3. Processando os Dados e Chamando a API (consulta.php)

Crie um arquivo consulta.php com o seguinte conteúdo. Aqui mostrarei duas abordagens: uma utilizando a função file_get_contents() e outra utilizando a biblioteca cURL.

Opção 1: Usando file_get_contents()

 
<?php if(isset($_POST['cep'])) {
    // Remove caracteres indesejados (mantém somente números)
    $cep = preg_replace("/[^0-9]/", "", $_POST['cep']);
    
    // Valida o CEP (no Brasil, deve ter 8 dígitos)
    if(strlen($cep) != 8) {
        echo "CEP inválido!";
        exit;
    }
    
    // Define a URL da API do ViaCEP com o CEP informado
    $url = "https://viacep.com.br/ws/{$cep}/json/";
    
    // Realiza a consulta à API
    $response = file_get_contents($url);
    
    if($response !== false) {
        // Converte o JSON recebido para um array associativo
        $data = json_decode($response, true);
        
        if(isset($data['erro'])) {
            echo "CEP não encontrado!";
        } else {
            // Exibe as informações retornadas pela API
            echo "<h2>Resultado da Consulta</h2>";
            echo "Endereço: " . $data['logradouro'] . "<br>";
            echo "Bairro: " . $data['bairro'] . "<br>";
            echo "Cidade: " . $data['localidade'] . "<br>";
            echo "Estado: " . $data['uf'] . "<br>";
        }
    } else {
        echo "Erro na consulta à API.";
    }
} else {
    echo "Nenhum CEP informado!";
}
?> 

Opção 2: Usando cURL

 
<?php if(isset($_POST['cep'])) {
    $cep = preg_replace("/[^0-9]/", "", $_POST['cep']);
    
    if(strlen($cep) != 8) {
        echo "CEP inválido!";
        exit;
    }
    
    $url = "https://viacep.com.br/ws/{$cep}/json/";
    
    // Inicializa a sessão cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    // Configura para retornar o resultado como string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // Executa a requisição e armazena a resposta
    $response = curl_exec($ch);
    // Fecha a sessão cURL
    curl_close($ch);
    
    if($response !== false) {
        $data = json_decode($response, true);
        
        if(isset($data['erro'])) {
            echo "CEP não encontrado!";
        } else {
            echo "<h2>Resultado da Consulta</h2>";
            echo "Endereço: " . $data['logradouro'] . "<br>";
            echo "Bairro: " . $data['bairro'] . "<br>";
            echo "Cidade: " . $data['localidade'] . "<br>";
            echo "Estado: " . $data['uf'] . "<br>";
        }
    } else {
        echo "Erro na consulta à API.";
    }
} else {
    echo "Nenhum CEP informado!";
}
?> 

Explicação do código:

  • Validação:
    Antes de fazer a consulta, o código remove caracteres não numéricos e valida se o CEP possui 8 dígitos.

  • Construção da URL:
    A URL da API é construída inserindo o CEP informado pelo usuário na string de URL da API do ViaCEP.

  • Consulta à API:

    • Na opção com file_get_contents(), a função é utilizada para obter o conteúdo da URL.

    • Na opção com cURL, iniciamos uma sessão, definimos as opções necessárias e obtemos o conteúdo da resposta.

  • Processamento do JSON:
    O conteúdo recebido (em JSON) é convertido para um array associativo usando json_decode(), facilitando a manipulação dos dados.

  • Exibição dos dados:
    Caso o CEP seja encontrado, os dados como logradouro, bairro, cidade e estado são exibidos. Se o CEP não existir ou ocorrer um erro, uma mensagem apropriada é mostrada.


4. Considerações Finais

  • Segurança:
    Sempre valide e sanitize os dados recebidos do usuário para evitar problemas de segurança.

  • Tratamento de erros:
    Implemente tratamento de erros para situações onde a API não responda ou retorne dados inesperados.

  • API Pública:
    Certifique-se de ler a documentação da API que você pretende utilizar, pois cada API pode ter suas particularidades (métodos de autenticação, limites de requisição, etc.).


Com essa aula, você aprendeu como criar um formulário que envia dados para um script PHP e como fazer uma requisição a uma API pública usando duas abordagens (file_get_contents e cURL). Esse exemplo pode ser adaptado para outras APIs públicas conforme necessário.

Tags:
#PHP  # API 

Notícias Relacionadas

APIs públicas com PHP
  Contato
  • support@nerdtoolkit.com.br
Mapa do Site
Mostrar mapa do site
  Sobre

Feito de programadores para programadores.

Este site utiliza cookies. Ao continuar a utilizar este site, você concorda com a nossa utilização de cookies e política de privacidade.
Leia mais Concordo