İstek Sınırlama ve API Sürümleme
RateLimiter ile istekleri sınırlayın ve API'nizi düzenli biçimde sürümlendirin.
İstek Sınırlama ve API Sürümleme, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
Hız Sınırlaması Neden Uygulanır?
Hız sınırlaması API'leri kötüye kullanımdan, DoS saldırılarından ve kontrolden çıkan istemcilerden korur. Tüm kullanıcılar arasında kaynakların adil biçimde dağıtılmasını sağlar.
Laravel'in Yerleşik Throttle'ı
İstekleri belirli bir zaman aralığı içinde sınırlamak için throttle ara yazılımını uygulayın.
<?php
Route::middleware("throttle:60,1")->group(function () {
// 60 requests per 1 minute per user/IP
Route::apiResource("posts", PostController::class);
});Özel Hız Sınırlayıcıları
Bir hizmet sağlayıcısında özel mantığa sahip adlandırılmış hız sınırlayıcıları tanımlayın.
<?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() => ...);Katmanlı Hız Sınırlaması
Kimliği doğrulanmış kullanıcının planına göre farklı sınırlar döndürün.
<?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()),
};
});Hız Sınırlaması Yanıt Üst Bilgileri
Hız sınırlaması uygulandığında Laravel, X-RateLimit-Limit, X-RateLimit-Remaining ve Retry-After üst bilgileriyle birlikte HTTP 429 döndürür.
API Sürümleme Stratejileri
Yaygın üç yaklaşım:
- URL ön eki:
/api/v1/users - Sorgu parametresi:
/api/users?version=1 - Accept üst bilgisi:
Accept: application/vnd.myapp.v1+json
URL ön eki, Laravel API'lerinde en yaygın yaklaşımdır.
URL Ön Önekiyle Sürümleme
Rotaları bir sürüm ön eki altında gruplayın.
<?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);
});Sürüme Özel Denetleyiciler
Denetleyicileri alt dizinlerde sürüme göre düzenleyin: App\Http\Controllers\Api\V1\ ve App\Http\Controllers\Api\V2\.
Eski Sürümleri Kullanımdan Kaldırma
Yaklaşan kaldırma işlemi hakkında istemcileri bilgilendirmek için eski sürüm yanıtlarına Deprecation veya Sunset üst bilgisi ekleyin.
<?php
// Middleware for v1 routes:
$response->headers->set("Deprecation", "version="v1"");
$response->headers->set("Sunset", "2026-01-01");API Kaynakları ve Sürümleme
Her sürüm için farklı yanıt yapıları oluşturmak üzere sürüme özel API kaynaklarını kullanın: V1\UserResource ve V2\UserResource.
Hız Sınırlamalarını Sınama
Sınamalarda, sınamaların birbirini etkilemesini önlemek için hız sınırlayıcıyı taklit edin.
<?php
RateLimiter::shouldReceive("tooManyAttempts")->andReturn(false);Özet
Temel hız sınırlaması için throttle:60,1 uygulayın. Özel ve katmanlı sınırlar için RateLimiter::for() kullanın. API'leri URL ön ekleriyle, sürüme özel denetleyicilerle ve kaynaklarla sürümleyin.
Hızlı Kontrol
Hız sınırlaması aşıldığında Laravel hangi HTTP durum kodunu döndürür?
Sıkça Sorulan Sorular
“İstek Sınırlama ve API Sürümleme” dersi ücretsiz mi?
Evet — “İstek Sınırlama ve API Sürümleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“İstek Sınırlama ve API Sürümleme” dersinde ne öğreneceğim?
RateLimiter ile istekleri sınırlayın ve API'nizi düzenli biçimde sürümlendirin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“İstek Sınırlama ve API Sürümleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- API Rotaları ve Kaynak Denetleyicileri
- API Kaynakları ve JSON Yanıtları
- Laravel Sanctum ile Kimlik Doğrulama
- İstek Sınırlama ve API Sürümleme