InertiaJS’i o kadar seviyorum ki, bu bir kişilik özelliği haline geliyor
InertiaJS’i o kadar seviyorum ki, bu bir kişilik özelliği haline geliyor
Inertia’yı her şeyde kullanma eğilimindeyim, ancak mevcut bir Laravel API’ye Inertia eklemek hızlı bir şekilde karmaşık hale geliyor. Bunun tersine, tam bir Inertia frontend ile başlıyorsunuz ve ardından bu verilerden bazılarını genel bir API olarak da sunmak istediğinizi anlıyorsunuz.
Naif çözümler şunlardır:
if ($request->wantsJson())kontrolünü kontrolörlerinize ekleyin- Aynı veriyi döndüren iki ayrı route yönetin
Ne yazık ki bunların hiçbiri doğru hissettirmiyor. Bu yüzden inertia-split oluşturuldu.
Inertia ile yeni başlamak: aynı kontrolörden hem API hem de Inertia yanıtları sunmak
Inertia ile yeni başlamak: aynı kontrolörden hem API hem de Inertia yanıtları sunmak
class ProjectController extends Controller {
use HasHybridResponses;
public function index() {
return $this->respond()->component('Projects/Index', [
'projects' => Project::all(),
]); // Inertia request → Svelte/Vue/React bileşeni görüntülenir
// API isteği → JSON döner
}
}
Kontrolör hiçbir kontrol yapmıyor. Inertia istekleri Inertia yanıtı alırken, API istemcileri JSON alır.
Mevcut API? Değiştirmeyin
Mevcut API? Değiştirmeyin
Eğer sadece mevcut bir API metodunu Inertia duyarlı hale getirmek istiyorsanız, bir anotasyon yeterlidir:
#[InertiaComponent('Users/Show')]
public function show(User $user): array {
return ['user' => $user];
}
Metodun gövdesi tam olarak olduğu gibi kalır.
Inertia istekleri, verileriniz prop olarak iletilen bileşeni alır. Diğer her şey, önceki gibi aynı JSON’u alır.
Anotasyona sahip olmayan metodlar tamamen etkilenmez.
Bu nasıl çalışıyor?
Bu nasıl çalışıyor?
Paket, kendi Inertia’nın ResponseFactory’sini servis sağlayıcıda kullanabilir (isteğe bağlı):
$this->app->singleton(ResponseFactory::class, HybridResponseFactory::class);
// Inertia isteği olup olmadığını kontrol eder ve uygun yanıt döner
Eski güzel OOP. Teşekkürler polimorfizm.
Sonuç
Sonuç
Problem yönü ne olursa olsun, Inertia ve API uç noktalarını aynı kontrolör kullanacak şekilde yapılandırmak büyük bir kazançtır.
Yine de route yazmak ve middleware’leri bağlamakla sorumlusunuz, ancak bu, zaman ve çaba tasarrufu sağlayacaktır.
Henüz beta aşamasında, buna göre kullanın!
Kaynak: Orijinal Makale


