Fastify.js Decorators ile Gelişmiş Özelleştirme


Fastify.js Decorators ile Gelişmiş Özelleştirme

Fastify.js Decorators Nedir?

Fastify.js, yüksek performanslı Node.js framework’lerinden biridir ve üzerinde kolayca özelleştirme yapmanıza olanak sağlar. Bu özelleştirmenin en güçlü yollarından biri ise decorators kavramıdır. Fastify.js decorators ile kendi fonksiyonlarınızı veya özelliklerinizi uygulamanıza ekleyebilir ve bunları tüm handler'larda veya plug-in’lerde rahatlıkla kullanabilirsiniz. Fastify.js decorators sayesinde projelerinizde kod tekrarı azaltılır ve modüler bir yapı oluşturulur.

Fastify Decorator Kullanımı

Fastify.js’de decorator yapısı ile örneğin global yardımcı fonksiyonlar veya servislere kolayca erişebilirsiniz. Decorator’ları decorate veya decorateRequest gibi fonksiyonlarla ekleyebilirsiniz. Temelde, Fastify instance'ına veya request/response objelerine kendi özelliklerinizi tanımlayabilirsiniz.

Örnek: Yeni Bir Decorator Eklemek

const fastify = require('fastify')();

fastify.decorate('toUpperCase', function(str) {
    return str.toUpperCase();
});

fastify.get('/', (request, reply) => {
    const mesaj = fastify.toUpperCase('merhaba fastify.js decorators!');
    reply.send({ sonuc: mesaj });
});

fastify.listen({ port: 3000 }, (err) => {
    if (err) throw err;
    console.log('Fastify.js Decorators örneği başladı.');
});

Yukarıdaki örnekte, toUpperCase adında bir fonksiyon Fastify instance'ına ekleniyor ve route handler içinde direkt olarak kullanılabiliyor.

Request Üzerine Decorator Eklemek

Kimi zaman sadece gelen isteklere özel fonksiyonlar eklemek isteyebilirsiniz. Bunun için decorateRequest fonksiyonunu kullanabilirsiniz:

fastify.decorateRequest('karsila', function() {
    return 'Hoş geldiniz!';
});

fastify.get('/hosgeldin', (request, reply) => {
    reply.send({ mesaj: request.karsila() });
});

Burada karsila fonksiyonu yalnızca request objesine eklenmiştir.

Fastify.js Decorators ile Yararları ve Dikkat Edilmesi Gerekenler

Fastify.js decorators kullanmanın bazı avantajları vardır: Kod tekrarını azaltmak, bağımlılık enjeksiyonuna olanak vermek ve uygulamanın test edilebilirliğini artırmak. Fakat, var olmayan bir özelliği tekrar eklemeye çalışmak hata verecektir. Bu yüzden, her decorator eklemeden önce o özelliğin varlığını kontrol etmek iyi bir pratiktir.

Sonuç

Fastify.js decorators, büyük ve modüler Node.js projelerinde işinizi çok daha kolaylaştırır. Hem global yardımcılar hem de isteğe özel özellikler tanımlamanız mümkün olur. "Fastify.js decorators" anahtar kelimesiyle ilerleyen projelerde kod kalitenizi yükseltmek için bu yapıyı mutlaka keşfetmelisiniz.