Fastify.js Schema Validation: Zod ve JSON Schema
Fastify.js Schema Validation: Zod ve JSON Schema
Fastify.js ile Doğrulama Neden Önemli?
Node.js tabanlı web frameworklerinden biri olan Fastify.js, yüksek performansıyla bilinir ve API geliştirirken hızlı sonuçlar elde etmek için tercih edilir. API uç noktalarınızda, gelen verinin doğru formatta olup olmadığına emin olmanız genellikle kritiktir. Burada devreye schema validation kavramı girer. Fastify.js, schema doğrulama için hem klasik JSON Schema desteği hem de modern Zod gibi schema tanımlama kütüphaneleri ile entegre çalışma yeteneğine sahiptir.
Fastify.js ile JSON Schema Kullanımı
JSON Schema, verilerin formatını tanımlamak ve doğrulamak için en yaygın yöntemlerden birisidir. Fastify.js, doğrudan schema özelliği ile bu desteği sağlayarak, endpoint'lerde veri doğrulamayı oldukça kolaylaştırır. Ayrıca JSON Schema kullanımı sayesinde OpenAPI/Swagger dökümantasyonu da çok daha kolay üretilebilir.
Örnek: JSON Schema ile Basit Doğrulama
const fastify = require('fastify')();
fastify.post('/kullanici', {
schema: {
body: {
type: 'object',
required: ['ad', 'yas'],
properties: {
ad: { type: 'string' },
yas: { type: 'number', minimum: 0 }
}
}
}
}, async (request, reply) => {
const { ad, yas } = request.body;
return { mesaj: `Merhaba, ${ad}! Yaşın: ${yas}` };
});
fastify.listen({ port: 3000 });
Yukarıda, body içindeki verinin bir obje olmasını ve ad ile yas alanlarının zorunlu ve uygun tipte olmasını JSON Schema ile tanımladık. Girilen verinin kurala uymaması durumunda Fastify.js otomatik olarak hata döner.
Zod ile Fastify.js Kullanımı
Zod, TipScript ve JavaScript projeleri için modern, güçlü ve fonksiyonel bir schema doğrulama kütüphanesidir. Fastify.js, @fastify/zod gibi pluginler aracılığıyla Zod’u kolayca entegre edip kullanmayı sağlar. Zod ile daha dinamik ve tip güvenliği yüksek kodlar yazılabilir.
Örnek: Fastify.js'de Zod ile Schema Validasyonu
const fastify = require('fastify')();
const { z } = require('zod');
const { zodToJsonSchema } = require('zod-to-json-schema');
const kullaniciSchema = z.object({
ad: z.string().min(1),
yas: z.number().int().min(0)
});
fastify.post('/kullanici', {
schema: {
body: zodToJsonSchema(kullaniciSchema)
}
}, async (request, reply) => {
// Zod ile ayrıca doğrulamak için:
const data = kullaniciSchema.parse(request.body);
return { mesaj: `Merhaba, ${data.ad}! Yaşın: ${data.yas}` };
});
fastify.listen({ port: 3000 });
Burada Zod ile tanımlanan şemayı zodToJsonSchema fonksiyonuyla Fastify'nın schema.body'sine entegre ediyoruz. Bu sayede hem Fastify.js ile uyumlu oluyoruz, hem de TypeScript projelerinde tiplerin yeniden kullanılabilirliğini sağlıyoruz.
Sonuç: Doğru Araçla Güvenli API'ler Geliştirin
Fastify.js schema validation, ister JSON Schema ister Zod kullanılsın, API'nizin veri güvenliğini ve istikrarını üst seviyeye çıkarır. JSON Schema klasik, zengin dökümantasyonlu yapısıyla hızlı başlangıçlar için çok iyi bir tercihken; Zod ise daha dinamik, tip güvenliği odaklı ortamlarda esnekliğe ihtiyaç duyanlar için öne çıkar. Her iki yöntemi de bilen geliştiriciler, projelerinde konforlu ve güvenli API tasarımları gerçekleştirebilirler. Fastify.js schema validation ile veri tutarlılığı sağlayabilir, bakımı ve testleri daha kolay projeler inşa edebilirsiniz.

Yorum Gönder