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.
API İçin Middleware Kullanımı
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.
Özel API Middleware Yazma
Örneğin, API’ye yapılan isteklerde belirli bir “API Key” doğrulaması yapmak istiyorsak, aşağıdaki gibi bir Middleware oluşturabiliriz:
Middleware Oluşturma
php artisan make:middleware ApiKeyMiddleware
Bu komut, app/Http/Middleware/ApiKeyMiddleware.php
dosyasını oluşturur.
Middleware İçeriği
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.
Middleware’i Kernel’e Eklemek
Bu middleware’i app/Http/Kernel.php
içinde $routeMiddleware
dizisine ekleyelim:
protected $routeMiddleware = [
'apiKey' => \App\Http\Middleware\ApiKeyMiddleware::class,
];
API Rotasına Middleware’i Uygulamak
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.
6️⃣ API İçin Rate Limiting (İstek Sınırlandırma)
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.
Rate Limiting Tanımlama
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 Kullanımı
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.
Sonuç
- Middleware, Laravel’de güvenlik ve erişim kontrolü sağlamak için güçlü bir araçtır.
- API projelerinde özel Middleware kullanarak yetkilendirme ve erişim doğrulaması yapabilirsiniz.
- Rate limiting ile API’nizi aşırı yüklenmeye karşı koruyabilirsiniz.
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı