Laravel

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.


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.
Web Doktoru

Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer

Son Gönderiler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…

19 Mart 2025

Laravel’de Mail Gönderme ve Bildirimler 📩

Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…

18 Mart 2025

Laravel’de File Storage (Dosya Depolama) Kullanımı

Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…

15 Mart 2025

Laravel’de Çoklu Dil (Localization) Kullanımı

Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…

14 Mart 2025

Laravel’de Test Driven Development (TDD) ve Test Yazımı

Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…

13 Mart 2025

Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi

Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…

12 Mart 2025