Rota İşleyicileri (Route Handlers)
Last updated
Last updated
Rota İşleyicileri, Web İsteği ve Yanıt API'lerini kullanarak belirli bir rota için özel istek işleyicileri oluşturmanıza olanak tanır.
Bilmekte fayda var: Rota İşleyicileri yalnızca app
dizini içinde kullanılabilir. Bunlar, pages
dizini içindeki API Rotalarına eşdeğerdir, yani API Rotalarını ve Rota İşleyicilerini birlikte kullanmanız gerekmez.
Rota İşleyicileri, app
dizini içindeki bir route.js|ts
dosyasında tanımlanır:
Rota İşleyicileri, page.js
ve layout.js
dosyalarına benzer şekilde uygulama dizini içinde yuvalanabilir. Ancak page.js
ile aynı rota segmenti seviyesinde bir route.js
dosyası olamaz.
Aşağıdaki HTTP yöntemleri desteklenmektedir: GET
, POST
, PUT
, PATCH
, DELETE
, HEAD
ve OPTIONS
. Desteklenmeyen bir yöntem çağrılırsa, Next.js 405 Method Not Allowed
yanıtı döndürür.
### Genişletilmiş NextRequest ve NextResponse API'leri
Yerel Request ve Response'u desteklemenin yanı sıra. Next.js, gelişmiş kullanım durumları için uygun yardımcılar sağlamak üzere bunları NextRequest
ve NextResponse
ile genişletir.
Response
nesnesi ile GET
yöntemi kullanıldığında Rota İşleyicileri varsayılan olarak statik olarak değerlendirilir.
TypeScript Uyarısı: Response.json()
geçerli olmasına rağmen, yerel TypeScript türleri şu anda bir hata gösteriyor, bunun yerine tipli yanıtlar için NextResponse.json()
kullanabilirsiniz.
### Dinamik Rota İşleyicileri
Rota işleyicileri şu durumlarda dinamik olarak değerlendirilir:
Request
nesnesini GET
yöntemiyle kullanma.
Diğer HTTP yöntemlerinden herhangi birini kullanma.
cookies
ve headers
gibi Dinamik İşlevlerin kullanılması.
Segment Yapılandırma Seçenekleri dinamik modu manuel olarak belirtir.
Örneğin:
Benzer şekilde, POST
yöntemi Rota İşleyicisinin dinamik olarak değerlendirilmesine neden olur.
Bilmekte fayda var: Önceden, API Rotaları form gönderimlerinin işlenmesi gibi kullanım durumları için kullanılabiliyordu. Rota İşleyicileri muhtemelen bu kullanım durumları için çözüm değildir. Hazır olduğunda bunun için mutasyonların kullanılmasını önereceğiz.
## Rota Çözümü (Route Resolution)
Bir rotayı
en düşük seviyeli yönlendirme ilkeli olarak düşünebilirsiniz.
Sayfa gibi düzenlere veya istemci tarafı gezinmelerine katılmazlar.
page.js ile aynı rotada bir route.js dosyası olamaz.
app/page.js
app/route.js
Geçersiz
app/page.js
app/api/route.js
Geçerli
app/[user]/page.js
app/api/route.js
Geçerli
## Örnekler
Aşağıdaki örnekler, Route Handlers'ın diğer Next.js API'leri ve özellikleriyle nasıl birleştirileceğini göstermektedir.
### Statik Verileri Yeniden Doğrulama (Revalidating Static Data)
next.revalidate
seçeneğini kullanarak statik veri getirme işlemlerini yeniden doğrulayabilirsiniz:
Alternatif olarak, revalidate
segment config seçeneğini kullanabilirsiniz:
Route Handlers, Next.js'deki cookies
ve headers
gibi dinamik işlevlerle kullanılabilir.
Çerezleri next/headers
'dan çerezlerle okuyabilirsiniz. Bu sunucu işlevi doğrudan bir Route Handler'da çağrılabilir veya başka bir işlevin içine yerleştirilebilir.
Bu çerez
örneği salt okunurdur. Çerezleri ayarlamak için Set-Cookie başlığını kullanarak yeni bir Response
döndürmeniz gerekir.
Alternatif olarak, çerezleri okumak için temel Web API'lerinin üstündeki soyutlamaları kullanabilirsiniz (NextRequest
):
Başlıkları next/headers
içinden okuyabilirsiniz. Bu sunucu fonksiyonu doğrudan bir Route Handler içinde çağrılabilir veya başka bir fonksiyonun içine yerleştirilebilir.
Bu headers
örneği salt okunurdur. Başlıkları ayarlamak için, yeni başlıklarla yeni bir response
döndürmeniz gerekir.
Alternatif olarak, başlıkları okumak için altta yatan Web API'lerinin üstündeki soyutlamaları kullanabilirsiniz (NextRequest
):
### Yönlendirmeler (Redirects)
Rota İşleyicileri, dinamik verilerden istek işleyicileri oluşturmak için Dinamik Segmentleri kullanabilir.
app/items/[slug]/route.js
/items/a
{ slug: 'a' }
app/items/[slug]/route.js
/items/b
{ slug: 'b' }
app/items/[slug]/route.js
/items/c
{ slug: 'c' }
Akış, yapay zeka tarafından oluşturulan içerik için OpenAI gibi Büyük Dil Modelleri (LLM'ler) ile birlikte yaygın olarak kullanılır. AI SDK hakkında daha fazla bilgi edinin.
Bu soyutlamalar bir akış oluşturmak için Web API'lerini kullanır. Temel Web API'lerini doğrudan da kullanabilirsiniz.
Standart Web API yöntemlerini kullanarak request
gövdesini okuyabilirsiniz:
### CORS
Standart Web API yöntemlerini kullanarak bir response
üzerinde CORS başlıklarını ayarlayabilirsiniz:
## Edge ve Node.js Çalışma Zamanları
Route Handlers, akış desteği de dahil olmak üzere hem Edge hem de Node.js çalışma zamanlarını sorunsuz bir şekilde desteklemek için izomorfik bir Web API'sine sahiptir. Rota İşleyicileri, Sayfalar ve Düzenlerle aynı rota segmenti yapılandırmasını kullandığından, genel amaçlı statik olarak yeniden oluşturulan Rota İşleyicileri gibi uzun zamandır beklenen özellikleri destekler.
Çalışma zamanını belirtmek için runtime
segment config seçeneğini kullanabilirsiniz:
## UI Dışı Yanıtlar
Kullanıcı arayüzü olmayan içeriği döndürmek için Rota İşleyicileri kullanabilirsiniz. Sitemap.xml
, robots.txt
, uygulama simgeleri ve açık grafik görüntülerinin tümünün yerleşik desteğe sahip olduğunu unutmayın.
## Segment Yapılandırma Seçenekleri
Rota İşleyicileri, sayfalar ve düzenlerle aynı rota segmenti yapılandırmasını kullanır.