Web Doktoru - API isteklerinde middleware kullanımı
Laravel’de API İsteklerinde Middleware Kullanımı ile API tabanlı projelerde de Middleware kullanarak güvenlik önlemleri alabilirsiniz. API rotalarında Middleware kullanımı, özellikle yetkilendirme, istek doğrulama ve hız sınırlama gibi işlemler için önemlidir.
Eğer bir API endpoint’ine erişimi sınırlamak istiyorsanız, Middleware’i routes/api.php içinde kullanabilirsiniz. Örneğin, auth:sanctum Middleware’ini belirli bir API rotasına ekleyelim:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ApiController;
Route::middleware('auth:sanctum')->get('/user', [ApiController::class, 'getUser']);Bu kod, auth:sanctum Middleware’ini kullanarak sadece doğrulanmış kullanıcıların /user API endpoint’ine erişmesine izin verir.
Örneğin, API’ye yapılan isteklerde belirli bir “API Key” doğrulaması yapmak istiyorsak, aşağıdaki gibi bir Middleware oluşturabiliriz:
php artisan make:middleware ApiKeyMiddlewareBu komut, app/Http/Middleware/ApiKeyMiddleware.php dosyasını oluşturur.
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ApiKeyMiddleware
{
public function handle(Request $request, Closure $next)
{
$apiKey = $request->header('X-API-KEY');
if ($apiKey !== config('services.api_key')) {
return response()->json(['message' => 'Yetkisiz erişim'], 401);
}
return $next($request);
}
}
Bu middleware, gelen isteğin header’ında "X-API-KEY" başlığını kontrol eder. Eğer API anahtarı eşleşmiyorsa, erişim reddedilir ve 401 hatası döndürülür.
Bu middleware’i app/Http/Kernel.php içinde $routeMiddleware dizisine ekleyelim:
protected $routeMiddleware = [
'apiKey' => \App\Http\Middleware\ApiKeyMiddleware::class,
];Artık bu middleware’i bir API rotasına uygulayabiliriz:
Route::middleware('apiKey')->get('/secure-data', function () {
return response()->json(['data' => 'Gizli Bilgiler']);
});Bu route’a istek atan kullanıcıların geçerli bir API anahtarı göndermesi gerekecek.
Laravel, belirli süreler içinde bir kullanıcının kaç istek yapabileceğini sınırlamak için rate limiting desteği sunar.
Laravel’de app/Providers/RouteServiceProvider.php içinde rate limit kurallarını belirleyebiliriz:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
public function boot()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60); // Dakikada en fazla 60 istek
});
}Bu ayar, API’ye yapılabilecek maksimum istek sayısını belirler.
Rate limit Middleware’ini kullanarak bir API rotasına limit ekleyebiliriz:
Route::middleware('throttle:30,1')->get('/limited', function () {
return response()->json(['message' => 'Bu API isteği sınırlıdır']);
});Bu, kullanıcının 1 dakika içinde en fazla 30 istek yapmasına izin verir.
İşletmeniz için dijital bir çözüm geliştirmek istediğinizde, karşılaşacağınız ilk soru genellikle budur: "Mobil uygulama mı…
Web sitesi hızı, 2026'da sadece bir teknik detay değil — doğrudan iş sonuçlarını etkileyen kritik…
Sosyal medya, 2026 itibarıyla 5.2 milyar aktif kullanıcıya ulaşmış durumda. Türkiye'de ise 65 milyondan fazla…
"İçerik kraldır" diyerek başlamak bu noktada klasik kaçabilir ama gerçek değişmiyor: doğru içerik, doğru kişilere,…
Google Ads, işletmelerin online görünürlüklerini artırmaları için en güçlü reklam platformlarından biri. Ancak bütçenizi doğru…
WordPress, dünyanın en popüler içerik yönetim sistemi (CMS) ve bu popülerlik, siber suçluların en sık…