Caso você tenha tentado criar uma API usando PHP tem grande possibilidade que você tenha recorrido a um framework como SlimFramework, Lumen ou Laravel, para tratar verbos HTTP além de GET e POST, neste vídeo mostro como você pode fazer manualmente um roteador que consiga entender os demais métodos e tratar de forma RestFull todos os tipos de requisição.

Código: https://github.com/Sobrinhos/routerReconhecendoTodosVerbosHTTPPHP

Neste vídeo mostro como você pode acessar os métodos HTTP: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD através da variável superglobal do PHP $_SERVER[‘REQUEST_METHOD’]


Como Criar uma API RestFull com PHP Puro

Faaaala, pessoal! Hoje vamos mergulhar em um tema essencial para quem trabalha com PHP e quer criar APIs: como construir uma API RestFull sem usar frameworks como Laravel ou Slim. Se você já tentou desenvolver uma API em PHP, provavelmente recorreu a algum framework para gerenciar os verbos HTTP além de GET e POST. Mas, neste tutorial, vou mostrar como criar um roteador manual em PHP que reconheça todos os métodos HTTP. Bora aprender?


Por que usar PHP puro para criar uma API?

Frameworks são ótimos para agilizar o desenvolvimento, mas eles também trazem uma série de dependências e funcionalidades que talvez você não precise em projetos menores. Criar uma API em PHP puro permite que você:

  • Entenda melhor o funcionamento dos métodos HTTP
  • Crie uma solução mais leve e customizada
  • Tenha total controle sobre o código, ideal para aprender ou para criar APIs minimalistas

Neste tutorial, vamos usar a variável superglobal do PHP $_SERVER['REQUEST_METHOD'] para capturar e tratar os métodos HTTP. Isso inclui métodos como GET, POST, PUT, PATCH, DELETE, OPTIONS e HEAD.


Configuração Inicial

Para começar, você só precisa de um ambiente PHP funcionando e um editor de código de sua preferência. Vamos criar um arquivo principal, que chamaremos de api.php, onde estará todo o nosso código.


Capturando e Tratando os Métodos HTTP

No arquivo api.php, vamos usar a superglobal $_SERVER['REQUEST_METHOD'] para detectar o método HTTP da requisição e, em seguida, fazer a ação correta. Aqui está um exemplo básico de como isso pode ser feito:

<?php
// Configura o cabeçalho para JSON
header("Content-Type: application/json");

// Captura o método da requisição
$method = $_SERVER[‘REQUEST_METHOD’];

// Define as rotas e ações para cada método
switch ($method) {
case ‘GET’:
// Chamadas para GET, por exemplo, para listar ou obter dados
echo json_encode([“message” => “Requisição GET recebida”]);
break;

case ‘POST’:
// Chamadas para POST, para criar novos recursos
echo json_encode([“message” => “Requisição POST recebida”]);
break;

case ‘PUT’:
// Chamadas para PUT, para atualizar recursos existentes
echo json_encode([“message” => “Requisição PUT recebida”]);
break;

case ‘PATCH’:
// Chamadas para PATCH, para atualizações parciais
echo json_encode([“message” => “Requisição PATCH recebida”]);
break;

case ‘DELETE’:
// Chamadas para DELETE, para excluir recursos
echo json_encode([“message” => “Requisição DELETE recebida”]);
break;

default:
// Caso o método não seja suportado, retornamos um erro
http_response_code(405);
echo json_encode([“message” => “Método não suportado”]);
break;
}
?>

Este código básico cria um roteador para diferentes métodos HTTP. Cada case no switch representa um método HTTP e uma resposta específica para cada um. Claro, em uma API completa, você precisará adicionar mais lógica para lidar com dados de entrada e saída.


Exemplo Completo de Roteador RestFull

Para APIs mais complexas, você pode organizar o código em funções que tratam cada ação. Aqui vai um exemplo mais avançado:

php
<?php
header("Content-Type: application/json");

$method = $_SERVER[‘REQUEST_METHOD’];

function handleGet() {
echo json_encode([“message” => “Dados recebidos via GET”]);
}

function handlePost() {
echo json_encode([“message” => “Dados recebidos via POST”]);
}

function handlePut() {
echo json_encode([“message” => “Dados atualizados via PUT”]);
}

function handleDelete() {
echo json_encode([“message” => “Recurso deletado via DELETE”]);
}

switch ($method) {
case ‘GET’:
handleGet();
break;
case ‘POST’:
handlePost();
break;
case ‘PUT’:
handlePut();
break;
case ‘DELETE’:
handleDelete();
break;
default:
http_response_code(405);
echo json_encode([“message” => “Método não suportado”]);
break;
}
?>

Neste exemplo, cada método tem sua própria função, o que deixa o código mais organizado e fácil de manter. Esse modelo também permite que você adicione mais lógica específica em cada função.


Como Rodar o Código Localmente

  1. Salve o arquivo api.php.
  2. Abra o terminal e navegue até o diretório onde está o arquivo.
  3. Inicie um servidor PHP local com o comando:

    bash






    php -S localhost:8000



  4. Abra o navegador ou uma ferramenta de teste de API, como o Postman, e faça uma requisição para http://localhost:8000/api.php usando diferentes métodos (GET, POST, PUT, DELETE) para testar as respostas.

Vídeo Explicativo

Para uma explicação detalhada, confira o vídeo completo onde mostro passo a passo como implementar essa lógica em PHP puro. Veja como acessar cada método HTTP usando $_SERVER['REQUEST_METHOD'].

Assista ao vídeo completo


Código no GitHub

Você também pode conferir o código completo no repositório do GitHub para esta API:

Código no GitHub


Conclusão

Criar uma API RestFull em PHP puro é um excelente exercício para quem deseja entender melhor como funcionam os métodos HTTP e construir aplicações eficientes e leves. Com esse conhecimento, você pode construir APIs mais personalizadas e adequadas às necessidades específicas do seu projeto, sem depender de frameworks.

gustavo
gustavo
Artigos: 56

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *