Como escrever uma API REST em PHP em 30 minutos: guia passo a passo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que você precisa de uma API REST em PHP?

REST API (Representational State Transfer) é um estilo arquitetural que permite que diferentes aplicações se comuniquem entre si via HTTP. Hoje, nenhum serviço web moderno pode funcionar sem uma API: aplicativos mobile, frontends SPA, integrações com sistemas de pagamento — tudo isso requer uma interface rápida e clara para troca de dados.

O PHP continua sendo uma das linguagens mais populares para desenvolvimento backend. Você pode escrever uma API REST completa em PHP puro, sem frameworks pesados — isso levará no máximo 30 minutos. Neste artigo, vamos percorrer um exemplo prático com operações CRUD (Create, Read, Update, Delete) para gerenciar uma lista de Tarefas.



1. Configuração do Ambiente e Estrutura do Projeto

Para isso você precisará de:

  • Um servidor local (Open Server, XAMPP, MAMP ou o servidor PHP integrado)
  • PHP versão 7.4 ou superior
  • Um editor de código (VS Code, PhpStorm)

Crie uma pasta raiz rest-api-php e dentro dela os seguintes arquivos:

rest-api-php/├── index.php       (ponto de entrada, roteador)├── config.php      (configurações do banco de dados)├── api/│   ├── tasks.php   (CRUD para tarefas)│   └── helpers.php (funções auxiliares)└── .htaccess       (redirecionar requisições para index.php)


1.1. Configurando .htaccess para URLs Limpas

Para rotear todas as requisições para um único ponto de entrada, crie um arquivo .htaccess na raiz:

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php [QSA,L]

Se você estiver usando o servidor PHP integrado, basta executá-lo a partir da pasta do projeto: php -S localhost:8000.



2. Criando o Roteador e a API Básica

Abra o index.php — este é nosso manipulador principal. Ele irá analisar o método HTTP e a URI e chamar as funções necessárias.



2.1. index.php — Ponto de Entrada

<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");

require_once 'config.php';require_once 'api/helpers.php';

$method = $_SERVER['REQUEST_METHOD'];$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);$uri = rtrim($uri, '/');

// Roteamento simplesif ($uri === '/api/tasks') { require_once 'api/tasks.php'; handleTasks($method);} elseif (preg_match('/^\\/api\\/tasks\\/(\\d+)$/', $uri, $matches)) { require_once 'api/tasks.php'; handleTask($method, (int)$matches[1]);} else { sendResponse(['error' => 'Endpoint não encontrado'], 404);}?>

Manipulamos duas rotas: /api/tasks (listar/criar) e /api/tasks/{id} (tarefa específica).



2.2. helpers.php — Funções Auxiliares

<?phpfunction sendResponse($data, $status = 200) {    http_response_code($status);    echo json_encode($data, JSON_UNESCAPED_UNICODE);    exit;}

function getJsonInput() { $input = file_get_contents('php://input'); return json_decode($input, true) ?? [];}?>


3. Trabalhando com o Banco de Dados e Operações CRUD

Vamos criar uma tabela tasks simples no MySQL:

CREATE TABLE tasks (    id INT AUTO_INCREMENT PRIMARY KEY,    title VARCHAR(255) NOT NULL,    status ENUM('pending', 'completed') DEFAULT 'pending',    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Arquivo config.php:

<?php$host = 'localhost';$dbname = 'rest_api_db';$username = 'root';$password = '';

try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO:

Blogs

Book Recommendations