PHP Academy · Aula

Limitação de taxa e versionamento de APIs

Limite solicitações com RateLimiter e versione sua API de forma organizada.

Aula 4 de 413 etapas

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:

  1. Prefixo de URL: /api/v1/users
  2. Parâmetro de consulta: /api/users?version=1
  3. 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?

Grátis para começar

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

  1. Rotas de API e controladores de recursos
  2. Recursos de API e respostas JSON
  3. Autenticação com Laravel Sanctum
  4. Limitação de taxa e versionamento de APIs
← Voltar para PHP Academy