Como escrever uma API REST em PHP em 30 minutos: para iniciantes
Criar sua própria API REST é um passo importante para qualquer desenvolvedor web. A API permite que seu aplicativo se comunique com outros serviços, aplicativos móveis ou frontends. Neste artigo, vamos abordar como escrever uma API REST simples, mas completa, em PHP puro em apenas 30 minutos. Você aprenderá como processar requisições HTTP, trabalhar com JSON e conectar um banco de dados. Nada de frameworks — apenas PHP puro e exemplos claros.
O que é uma API REST e para que serve?
REST (Representational State Transfer) é um estilo arquitetural para criar serviços web. Uma API construída com princípios REST utiliza métodos HTTP padrão para trabalhar com recursos:
- GET — obter dados (por exemplo, lista de usuários);
- POST — criar um novo recurso;
- PUT — atualizar um recurso existente;
- DELETE — excluir um recurso.
No desenvolvimento web moderno, a API REST é usada em toda parte: desde aplicativos móveis até microsserviços. Ao aprender a criá-la em PHP, você poderá integrar rapidamente seus projetos com qualquer cliente.
Passo 1: Configuração da estrutura do projeto
Antes de escrever o código, crie uma estrutura simples de arquivos. Para nossa API, precisaremos de apenas alguns arquivos:
index.php— ponto de entrada, que processará todas as requisições;.htaccess— para redirecionar todas as requisições para o index.php (se estiver usando Apache);config.php— configurações de conexão com o banco de dados (opcional).
Crie o arquivo .htaccess na pasta raiz do projeto:
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [QSA,L]Este código redireciona todas as requisições que não apontam para arquivos existentes para o index.php. Agora, nossa API processará qualquer URL, como /api/users ou /api/users/1.
Passo 2: Criação do roteador e processamento de requisições
Abra o arquivo index.php e escreva a lógica básica de roteamento. Vamos determinar o método HTTP e a URL, e então chamar as funções correspondentes.
<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");header("Access-Control-Allow-Headers: Content-Type, Authorization");
$method = $_SERVER['REQUEST_METHOD'];$request = explode('/', trim($_SERVER['PATH_INFO'] ?? '/', '/'));
// Roteador simplesswitch ($request[0] ?? '') { case 'users': handleUsers($method, $request); break; default: http_response_code(404); echo json_encode(["message" => "Route not found"]); break;}
function handleUsers($method, $request) { $id = $request[1] ?? null; switch ($method) { case 'GET': if ($id) { // Obter um usuário echo json_encode(["message" => "Get user with id $id"]); } else { // Obter todos os usuários echo json_encode(["message" => "Get all users"]); } break; case 'POST': $input = json_decode(file_get_contents("php://input"), true); echo json_encode(["message" => "Create user", "data" => $input]); break; case 'PUT': if ($id) { $input = json_decode(file_get_contents("php://input"), true); echo json_encode(["message" => "Update user with id $id", "data" => $input]); } else { http_response_code(400); echo json_encode(["message" => "ID is requ