Limitação de taxa e versionamento de APIs
Limite solicitações com RateLimiter e versione sua API de forma organizada.
Limitação de taxa e versionamento de APIs é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
Por que limitar requisições?
A limitação de requisições protege as APIs contra abuso, ataques de DoS e clientes descontrolados. Ela garante uma distribuição justa de recursos entre todos os usuários.
Limitação integrada do Laravel
Aplique o middleware throttle para limitar solicitações por janela de tempo.
<?php
Route::middleware("throttle:60,1")->group(function () {
// 60 requests per 1 minute per user/IP
Route::apiResource("posts", PostController::class);
});Limitadores de taxa personalizados
Defina limitadores de taxa nomeados com lógica personalizada em um provedor de serviços.
<?php
// In AppServiceProvider::boot():
RateLimiter::for("api", function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});
// Apply:
Route::middleware("throttle:api")->group(fn() => ...);Limitação de taxa por níveis
Retorne limites diferentes com base no plano do usuário autenticado.
<?php
RateLimiter::for("api", function (Request $request) {
return match($request->user()?->plan) {
"pro" => Limit::perMinute(300)->by($request->user()->id),
"free" => Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()),
default => Limit::perMinute(30)->by($request->ip()),
};
});Cabeçalhos de resposta da limitação de taxa
Quando a limitação é aplicada, o Laravel retorna HTTP 429 com os cabeçalhos: X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After.
Estratégias de versionamento de API
Três abordagens comuns:
- Prefixo de URL:
/api/v1/users - Parâmetro de consulta:
/api/users?version=1 - Cabeçalho Accept:
Accept: application/vnd.myapp.v1+json
O prefixo de URL é a abordagem mais comum nas APIs do Laravel.
Versionamento por prefixo de URL
Agrupe as rotas sob um prefixo de versão.
<?php
Route::prefix("v1")->group(function () {
Route::apiResource("users", \App\Http\Controllers\Api\V1\UserController::class);
});
Route::prefix("v2")->group(function () {
Route::apiResource("users", \App\Http\Controllers\Api\V2\UserController::class);
});Controladores específicos por versão
Organize os controladores por versão em subdiretórios: App\Http\Controllers\Api\V1\ e App\Http\Controllers\Api\V2\.
Descontinuação de versões antigas
Adicione um cabeçalho Deprecation ou Sunset às respostas de versões antigas para notificar os clientes sobre a próxima remoção.
<?php
// Middleware for v1 routes:
$response->headers->set("Deprecation", "version="v1"");
$response->headers->set("Sunset", "2026-01-01");Recursos de API e versionamento
Use recursos de API específicos por versão: V1\UserResource e V2\UserResource para definir estruturas de resposta diferentes para cada versão.
Teste de limites de taxa
Nos testes, simule o limitador de taxa para evitar interferências entre testes.
<?php
RateLimiter::shouldReceive("tooManyAttempts")->andReturn(false);Resumo
Aplique throttle:60,1 para uma limitação de taxa básica. Use RateLimiter::for() para limites personalizados e por níveis. Faça o versionamento das APIs usando prefixos de URL e controladores e recursos específicos por versão.
Verificação rápida
Qual código de status HTTP o Laravel retorna quando o limite de taxa é excedido?
Aprenda PHP com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 49
- Aulas
- 195
Perguntas Frequentes
A aula “Limitação de taxa e versionamento de APIs” é grátis?
Sim — o texto completo de “Limitação de taxa e versionamento de APIs” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Limitação de taxa e versionamento de APIs”?
Limite solicitações com RateLimiter e versione sua API de forma organizada. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Limitação de taxa e versionamento de APIs”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Rotas de API e controladores de recursos
- Recursos de API e respostas JSON
- Autenticação com Laravel Sanctum
- Limitação de taxa e versionamento de APIs