Server Actions: kendi API’n olmadan formlar (Next.js)
Kısaca: Server Action’lar sunucuda çalışan ve doğrudan formlardan veya bileşenlerden çağrılan işlevlerdir; elle yazılmış birçok API rotasının yerini alırlar.
Biraz daha ayrıntılı: Her form için bir API rotası kurmak yerine bir işlevi "use server" ile işaretler ve bir <form>’a action olarak verirsin. Gönderimde tarayıcı işlevi sunucuda çağırır; ağ çağrısını Next.js halleder.
Ayrıntılı
Örnek
// actions.ts
"use server";
export async function save(formData: FormData) {
const title = String(formData.get("title") ?? "");
// doğrula, kaydet, sonra sayfayı yenile
}<form action={save}> yeterlidir. Aşamalı geliştirme sayesinde form JavaScript olmadan bile çalışır. Kaydettikten sonra verileri revalidatePath/revalidateTag ile yeniler veya redirect ile yönlendirirsin.
Güvenlik: herkese açık bir API gibi ele al
Her Server Action, salt bir işlev çağrısı gibi görünse bile HTTP üzerinden erişilebilen bir uç noktadır. Bu yüzden her zaman:
- Girdileri doğrula (örneğin Zod ile); TypeScript türleri çalışma zamanında yoktur.
- Oturum açmayı ve izni yalnızca arayüzde değil, işlevin kendi içinde kontrol et.
- Kötüye kullanıma açık eylemler için hız sınırlama.
- Sır döndürme; hata mesajlarını genel tut.
Durum ve geri bildirim
useActionStatedönüş değerini (örneğin hata metinleri) ve bekleme durumunu sağlar.useFormStatusdüğmelerde “Kaydediliyor…” gösterir.useOptimistic, sunucu yanıtlamadan önce değişiklikleri hemen gösterir.- Dosya yüklemeleri ve akış için rota işleyicileri bazen daha uygundur.
Ne zaman API rotası tercih edilmeli
Dış istemciler (mobil uygulama, üçüncü taraflar, webhook’lar) arayüzü kullanacaksa belgelenmiş, sürümlü bir API mantıklıdır. Server Action’lar kendi arayüzün içindir ve adresleri derleme zamanında değişir.
Ayrıca bak: Next.js App Router, Formları Zod ile doğrulamak, CSRF