createRoute Kullanımı
Silgi'de createRoute
, bir API endpoint'inin yolunu (route) tanımlamak için kullanılır. Route tanımları, şema (createSchema
) ve servis (createService
) tanımlarınızla birlikte kullanılarak endpoint'lerinizi daha okunabilir ve yönetilebilir hale getirir.
Temel Kullanım
import { createRoute } from 'silgi'
export const getBookByIdRoute = createRoute({
route: '/api/library/books/:id',
})
Bu örnekte, /api/library/books/:id
yolunu temsil eden bir route nesnesi oluşturulmuştur.
Neden createRoute Kullanılır?
- Okunabilirlik: Route tanımlarını merkezi ve açık hale getirir.
- Tekrar Kullanılabilirlik: Aynı route'u şema ve servislerde tekrar tekrar kullanabilirsiniz.
- Otomasyon: CLI ve araçlar tarafından route'lar kolayca taranabilir.
Route Ekledikten Sonra Ne Yapmalı?
Yeni bir route ekledikten veya mevcut bir route'u değiştirdikten sonra, şemalarınızın ve servislerinizin otomatik olarak güncellenmesi ve bağlanması için Silgi CLI ile birlikte gelen aşağıdaki komutu çalıştırmalısınız:
pnpm silgi prepare
bun silgi prepare
npm run silgi prepare
yarn silgi prepare
Bu komut, route tanımlarınızı tarar ve ilgili şema ile servisleri otomatik olarak bağlar. Böylece tip güvenliği ve otomasyon avantajlarından tam olarak yararlanırsınız.
Route Nesnesi ile Şema ve Servis Bağlantısı
Bir route nesnesi, ilgili şema ve servis ile birlikte kullanılabilir:
import { createRoute, createSchema, createService } from 'silgi'
import { z } from 'zod'
export const getBookByIdRoute = createRoute({
route: '/api/library/books/:id',
})
export const getBookByIdSchema = createSchema({
path: '/api/library/books/:id',
method: ['GET'],
setup: {
pathParams: z.object({ id: z.string() }),
output: z.object({ id: z.string(), name: z.string() }),
},
})
export const getBookByIdService = createService({
path: `GET:/api/library/books/:id`,
setup: {
handler: async (input) => {
// ...handler kodu...
}
}
})
Parametreli Route Tanımları
Route tanımlarında parametreler iki nokta (:param
) ile belirtilir:
export const getUserRoute = createRoute({
route: '/api/users/:userId',
})
Sıkça Sorulanlar
- Route tanımı zorunlu mu? Evet, Silgi'de route tanımı zorunludur.
createSchema
,createMiddleware
,createService
gibi tüm yapılar route üzerinden beslenir ve otomatik tip çıkarımları da route tanımı üzerinden yapılır. Route'u tek bir yerde tanımlayarak, tüm sistemde tutarlı ve güvenli bir şekilde kullanabilirsiniz.