Ratenbegrenzung und API-Versionierung
Drosseln Sie Anfragen mit RateLimiter und versionieren Sie Ihre API übersichtlich.
Ratenbegrenzung und API-Versionierung ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Rate-Limiting?
Rate-Limiting schützt APIs vor Missbrauch, DoS-Angriffen und außer Kontrolle geratenen Clients. Es sorgt für eine faire Verteilung der Ressourcen auf alle Benutzer.
Integriertes Laravel-Throttling
Wenden Sie die Middleware throttle an, um die Anzahl der Requests pro Zeitfenster zu begrenzen.
<?php
Route::middleware("throttle:60,1")->group(function () {
// 60 requests per 1 minute per user/IP
Route::apiResource("posts", PostController::class);
});Benutzerdefinierte Rate-Limiter
Definieren Sie in einem Service Provider benannte Rate-Limiter mit eigener Logik.
<?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() => ...);Gestaffelte Ratenbegrenzung
Geben Sie je nach Tarif des authentifizierten Benutzers unterschiedliche Limits zurück.
<?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()),
};
});Header für Ratenbegrenzungsantworten
Wenn das Limit überschritten wurde, gibt Laravel HTTP 429 mit den Headern X-RateLimit-Limit, X-RateLimit-Remaining und Retry-After zurück.
Strategien zur API-Versionierung
Drei gängige Ansätze:
- URL-Präfix:
/api/v1/users - Query-Parameter:
/api/users?version=1 - Accept-Header:
Accept: application/vnd.myapp.v1+json
Das URL-Präfix ist bei Laravel-APIs am weitesten verbreitet.
Versionierung mit URL-Präfix
Gruppieren Sie Routen unter einem Versionspräfix.
<?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);
});Versionsspezifische Controller
Organisieren Sie Controller nach Version in Unterverzeichnissen: App\Http\Controllers\Api\V1\ und App\Http\Controllers\Api\V2\.
Alte Versionen abkündigen
Fügen Sie Antworten alter Versionen den Header Deprecation oder Sunset hinzu, um Clients über die bevorstehende Entfernung zu informieren.
<?php
// Middleware for v1 routes:
$response->headers->set("Deprecation", "version="v1"");
$response->headers->set("Sunset", "2026-01-01");API-Ressourcen und Versionierung
Verwenden Sie versionsspezifische API Resources: V1\UserResource und V2\UserResource, um je nach Version unterschiedliche Antwortstrukturen zu erstellen.
Ratenbegrenzungen testen
Simulieren Sie den Rate-Limiter in Tests, um gegenseitige Beeinflussungen der Tests zu vermeiden.
<?php
RateLimiter::shouldReceive("tooManyAttempts")->andReturn(false);Zusammenfassung
Verwenden Sie throttle:60,1 für eine einfache Ratenbegrenzung. Nutzen Sie RateLimiter::for() für benutzerdefinierte, gestaffelte Limits. Versionieren Sie APIs mit URL-Präfixen sowie versionsspezifischen Controllern und Ressourcen.
Kurztest
Welchen HTTP-Statuscode gibt Laravel zurück, wenn das Ratenlimit überschritten wurde?
Häufig gestellte Fragen
Ist die Lektion „Ratenbegrenzung und API-Versionierung“ kostenlos?
Ja — der vollständige Text von „Ratenbegrenzung und API-Versionierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Ratenbegrenzung und API-Versionierung“?
Drosseln Sie Anfragen mit RateLimiter und versionieren Sie Ihre API übersichtlich. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Ratenbegrenzung und API-Versionierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- API-Routen und Ressourcencontroller
- API-Ressourcen und JSON-Antworten
- Authentifizierung mit Laravel Sanctum
- Ratenbegrenzung und API-Versionierung