Como escrever uma API REST em PHP em 30 minutos: código pronto

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

Como escrever uma API REST em PHP em 30 minutos



Criar sua própria API REST é uma das habilidades essenciais do desenvolvedor backend moderno. Muitos iniciantes pensam que para isso são necessários frameworks pesados como Laravel ou Symfony. Na verdade, uma API REST básica em PHP puro pode ser escrita em literalmente meia hora. Neste artigo, vamos analisar o processo passo a passo de criação de um serviço RESTful que pode ser usado imediatamente em projetos reais — desde aplicativos móveis até sites de página única.



Não usaremos bibliotecas de terceiros. Todo o código será escrito em PHP vanilla. Você aprenderá a processar requisições HTTP, trabalhar com JSON, organizar roteamento e retornar os status HTTP corretos. Vamos lá!



1. Estrutura do projeto e preparação



Antes de escrever o código, vamos criar 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 — arquivo com configurações de conexão ao banco de dados (opcional).


Crie uma pasta para o projeto, por exemplo, my-rest-api, e coloque esses arquivos nela.



Configuração do .htaccess



Para que todas as requisições cheguem ao nosso script principal, crie o arquivo .htaccess na raiz do projeto:



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


Este código redireciona todas as requisições que não levam a arquivos ou pastas reais para o index.php. O parâmetro QSA preserva a query string.



2. Roteamento e processamento de requisições



Agora vamos escrever o arquivo principal — index.php. Ele receberá a requisição, determinará o método HTTP (GET, POST, PUT, DELETE) e o caminho, e então chamará o manipulador adequado.



Roteamento básico



Vamos começar com um exemplo simples. Criaremos um array de rotas e uma função para processá-las:



<?phpheader('Content-Type: application/json');header('Access-Control-Allow-Origin: *');header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');header('Access-Control-Allow-Headers: Content-Type');

$method = $_SERVER['REQUEST_METHOD'];$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

// Remove a barra no final$path = rtrim($path, '/');

// Roteamento simplesswitch (true) { case $path === '/api/users' && $method === 'GET': getUsers(); break; case $path === '/api/users' && $method === 'POST': createUser(); break; case preg_match('/^\\/api\\/users\\/(\\d+)$/', $path, $matches) && $method === 'GET': getUser($matches[1]); break; default: http_response_code(404); echo json_encode(['error' => 'Route not found']); break;}

function getUsers() { // Placeholder echo json_encode(['users' => ['Alice', 'Bob', 'Charlie']]);}

function getUser($id) { echo json_encode(['user' => ['id' => $id, 'name' => 'User ' . $id]]);}

function createUser() { $input = json_decode(file_get_contents('php://input'), true); echo json_encode(['message' => 'User created', 'data' => $input]);}?>


Observe alguns pontos importantes:

  • Definimos o cabeçalho Content-Type: application/json — todas as respostas serão em JSON.
  • Os cabeçalhos CORS permitem requisições de qualquer domínio (para desenvolvimento).
  • O corpo da requisição POST/PUT é lido através de php://input.


3. Trabalhando com banco de dados



Uma API real raramente trabalha com placeholders. Vamos adicionar a conexão com MySQL via PDO. Crie o arquivo config.php:



<?phpdefine('DB_HOST', 'localhost');define(                

Blogs

Book Recommendations