React (veya Next.js) ile Laravel'i birleştirmek, günümüzün en popüler ve güçlü "full-stack" yaklaşımlarından biridir. Laravel'in sağlam backend yeteneklerini, React'in dinamik kullanıcı arayüzü gücüyle birleştirerek ölçeklenebilir uygulamalar geliştirebilirsiniz.
Genel olarak iki ana yaklaşım mevcuttur: Decoupled (Bağımsız API) ve Inertia.js (Bütünleşik Yapı).
Bu yöntemde Laravel sadece bir veri kaynağı (API) görevi görür. Next.js ise tamamen bağımsız bir proje olarak bu veriyi tüketir.
- Laravel Sanctum: API tabanlı kimlik doğrulama (Token-based Auth) için en iyi çözümdür.
- API Resources: Veritabanı modellerini JSON formatına dönüştürmek için kullanılır.
- CORS Ayarları:
config/cors.phpdosyasında Next.js uygulamanızın URL'ine izin vermeniz gerekir.
- Data Fetching: Sunucu tarafında
fetchveyaaxioskullanarak Laravel API'sine istek atılır. - Server Components: Veriyi sunucuda çekerek SEO avantajı sağlar.
- Client Components: Kullanıcı etkileşimi (form gönderimi, sepet işlemleri) için kullanılır.
Inertia.js, Laravel'den ayrılmadan "Single Page Application" (SPA) deneyimi yaşamanızı sağlar. Laravel rotalarını kullanmaya devam ederken, görünüm (View) dosyası olarak React bileşenlerini kullanırsınız.
- API Yazma Zorunluluğu Yok: Veriyi doğrudan controller içinden props olarak React'e gönderirsiniz.
- Routing Laravel'de Kalır: Next.js routing yapısıyla uğraşmanıza gerek kalmaz.
- SEO ve Hız: Klasik Laravel uygulaması gibi çalışır ancak sayfa geçişleri yenilenmeden gerçekleşir.
// Laravel Controller Örneği (Inertia)
public function index() {
return Inertia::render('Home', [
'users' => User::all()
]);
}Bağlantının en kritik noktası kullanıcı oturum yönetimidir.
| Yöntem | Kullanım Alanı | Açıklama |
|---|---|---|
| Sanctum (Stateful) | Aynı domain altında (örn: api.site.com ve site.com) | Cookie tabanlı güvenli oturum. En kolayıdır. |
| Sanctum (Tokens) | Mobil uygulamalar veya farklı domainler | API Token üretilir ve her istekte Header'da gönderilir. |
| JWT (Json Web Token) | Tamamen bağımsız mikroservisler | Stateless bir yapı sunar, Laravel tarafında tymon/jwt-auth gibi paketler gerektirir. |
Hangi yolu seçmelisiniz? İhtiyaca göre karar verin:
| İhtiyaç | Tercih Edilen Yapı | Neden? |
|---|---|---|
| E-Ticaret / Blog | Next.js + Laravel API | Üstün SEO ve ISR (Incremental Static Regeneration) desteği. |
| Yönetim Paneli / SaaS | Laravel + Inertia.js + React | Çok hızlı geliştirme süreci ve karmaşık form yönetimi. |
| Mobil Uygulama Destekli | Laravel API (Headless) | Aynı API hem web hem mobil uygulama tarafından kullanılabilir. |
- Environment Variables (.env): Next.js tarafında
NEXT_PUBLIC_API_URLdeğişkenini tanımlayarak Laravel API'nize erişin. - Validation Hataları: Laravel'in döndürdüğü 422 hatalarını React tarafında bir global handler (interceptor) ile yakalamak kullanıcı deneyimini artırır.
- Image Optimization: Laravel'den gelen görselleri Next.js
Imagebileşeni ile kullanırken, Laravel domainininext.config.jsiçindeimages.remotePatternskısmına eklemeyi unutmayın.
Bu mimariyi kurarken pnpm kullanıyorsan, Next.js projenin bağımlılıklarını çok daha hızlı yönetebilirsin. Laravel tarafında ise composer paketlerini güncel tutman yeterli olacaktır.