Giriş
Fastify, web uygulamaları ve API'ler oluşturmak için yüksek performanslı ve düşük maliyetli bir çözüm sunmaya odaklanan, Node.js için bir web çerçevesidir. Kullanımı basit olacak şekilde tasarlanmıştır ve çok çeşitli kullanım durumları için ideal hale getiren güçlü özellikler sunar. Fastify, etkileyici hız ölçütlerine sahiptir ve yüksek yükleri verimli bir şekilde işleme yeteneğiyle bilinir.
Fastify'nin Avantajları:
- Performans: Fastify, hıza odaklanarak oluşturulmuştur ve Node.js için mevcut en hızlı web çerçevelerinden biridir. Düşük maliyeti ve verimli mimarisi, daha kısa yanıt sürelerine ve daha iyi genel performansa katkıda bulunur.
- Şema Tabanlı Doğrulama: Fastify, istek ve yanıt yüklerinin şema tabanlı doğrulanması için yerleşik destek sağlar. Bu, geliştiricilerin gelen veriler için net beklentiler tanımlamasına olanak tanır ve bu da güvenilirliği ve güvenliği artırır.
- Genişletilebilirlik: Fastify, geliştiricilerin uygulamalarının işlevselliğini artırmak için kolayca özel eklentiler ve ara yazılımlar eklemesine olanak tanıyarak oldukça genişletilebilir. Bu, onu çok çeşitli proje gereksinimlerine uyarlanabilir hale getirir.
- Eşzamansız Destek: Fastify, eşzamansız programlama kalıplarını tam olarak benimser ve G/Ç'ye bağlı işlemleri verimli bir şekilde işlemek için çok uygundur. Eşzamansız kodu basitleştirmek için async/await gibi modern JavaScript özelliklerinden yararlanır.
- Geliştirici Dostu: Sezgisel API'si ve kapsamlı belgeleriyle Fastify, geliştirici dostu bir deneyim sunmayı amaçlar. Hem yeni başlayanlar hem de deneyimli geliştiriciler için anlaşılması ve kullanılması kolay, net ve öz bir sözdizimi sunar.
Bu Eğitimde Neler Kapsanacak:
Bu eğitimde, basit bir API oluşturmak için Fastify'nin nasıl kullanılacağının temellerini ele alacağız. Bir Fastify projesi kurmaktan başlayarak, rota işleme, istek doğrulama, ara yazılım, hata işleme, test etme ve dağıtım dahil olmak üzere temel özelliklerini kademeli olarak keşfedeceğiz. Eğitimin sonunda, sağlam ve verimli web uygulamaları oluşturmak için Fastify'yi nasıl kullanacağınız konusunda sağlam bir anlayışa sahip olacaksınız.
Önkoşullar
Başlamadan önce, aşağıdaki önkoşulların yüklü olduğundan emin olun:
- Node.js ve npm: Fastify'nin sisteminizde Node.js ve npm'nin yüklü olması gerekir. Bunları resmi Node.js web sitesinden indirebilir ve yükleyebilirsiniz.
- JavaScript ve Node.js Hakkında Temel Bilgi: Bu eğitim, JavaScript ve Node.js ile nasıl çalışacağınız konusunda temel bir anlayışa sahip olduğunuzu varsaymaktadır. Geri aramalar, vaatler ve modüller gibi kavramlara aşinalık, Fastify'nin özelliklerini keşfederken faydalı olacaktır.
Bu önkoşullar yerine getirildiğinde, Fastify ile oluşturmaya dalmaya hazırsınız! Hadi başlayalım.
Fastify'yi Kurma
Fastify'yi npm ile Yükleme
Fastify'ye başlamak için, önce Node.js için paket yöneticisi olan npm aracılığıyla yüklemeniz gerekir. Yarn veya Bun hayranıysanız, onları da kullanmayı deneyebilirsiniz. Bu kılavuz için NPM kullanacağım.
Ve eğer bilmiyorsanız veya NPM'yi nasıl kullanacağınızı tam olarak anlamıyorsanız, bununla nasıl uğraşacağınızla ilgili bu eğitime göz atabilirsiniz.
Başlamak için, Fastify projesini ayarlamak istediğiniz Masaüstünüzde veya çalışma dizininizde yeni bir klasör oluşturun.
Bunu yapmak için, terminalinizde aşağıdaki kodu adım adım çalıştırın
mkdir my-fastify-project
cd my-fastify-project
Şimdi, bir klasör oluşturdunuz ve terminalinizden o klasöre geçtiniz. Aferin!
Sıradaki, o proje için npm'yi başlatın ve Fastify çerçevesini yükleyin.
npm init -y
npm install fastify
Bu noktada, projeniz yalnızca projeniz ve bağımlılıklarınız hakkında meta veriler içeren package.json
, package-lock.json
ve node_moudles
dosyalarından oluşur. Fastify uygulamamızı oluşturmaya devam ettikçe, bu yapıya daha fazla dosya ve dizin ekleyeceğiz.
Basit Bir Sunucu Oluşturma
Temel Bir Fastify Sunucusu Kurma
Artık projemizi kurduğumuza göre, basit bir Fastify sunucusu oluşturalım. Proje dizininizde index.js
adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
// Fastify modülünü içe aktar
const fastify = require('fastify')();
// Kök URL için bir rota işleyicisi tanımlayın
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
// Sunucuyu başlat
const start = async () => {
try {
await fastify.listen({ port: 3000 });
console.log('Sunucu http://localhost:3000 adresinde çalışıyor');
} catch (error) {
console.error('Sunucuyu başlatırken hata:', error);
process.exit(1);
}
};
start();
Bu kod, 3000
numaralı bağlantı noktasında gelen HTTP isteklerini dinleyen temel bir Fastify sunucusu kurar. Kök URL'ye (/)
bir istek yapıldığında, "hello": "world" mesajını içeren bir JSON nesnesiyle yanıt verir.
Aşağıdaki kodun çalışması için, onu çalıştırmasını söylememiz gerekiyor. Bunu nasıl yapabiliriz? Terminalimizde proje kök klasöründe node index.js
çalıştırabiliriz ve çalışacaktır.
Ancak bu, bir dosya güncellemesi yaptığımızda o komutu çalıştırmamız gerektiği anlamına gelir. Bu stresi istemiyoruz. Dosyayı kaydedebilmeli ve otomatik olarak yeniden oluşturmayı tetikleyebilmeliyiz. Bunu nasıl yapabiliriz?
Peki, Nodemon geliyor.
Nodemon'u yüklemek için, terminalde aşağıdaki kodu çalıştırın;npm install nodemon --save-dev
.
Bu, Nodemon'u yükleyecektir ve kodumuza odaklanabileceğiz ve manuel olarak yeniden oluşturmasını istemeyeceğiz.
Ancak Nodemon ile henüz işimiz bitmedi. Bunun Nodemon için yapılandıracağımız son kod parçası olduğuna söz veriyorum. Ne yapmamız gerekiyor? Bir dosyayı her kaydettiğimizde otomatik olarak tetiklemesini söylememiz gerekiyor. Bunu nasıl yapıyoruz?
package.json
dosyanızı açın ve script
bölümünü aşağıdaki kodla değiştirin:
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Ve işte! Nodemon yapılandırmasıyla işimiz bitti, söz veriyorum!
Şimdi sunucumuzu başlatmak için, proje kök dizinimizde npm run dev
çalıştırmamız gerekiyor. Bunu yaptıktan sonra, tarayıcınıza gidin ve http://localhost:3000/
yazın - yukarıdaki index.js
dosyamızda tanımladığımız gibi örnek yanıtımız hello world
'ü göreceksiniz.

Farklı HTTP yöntemlerini (GET, POST, vb.) işlemek için rotalar ekleme
Fastify, REST API'leri oluşturmayı / GET, POST, PUT, DELETE vb. gibi farklı HTTP yöntemlerini işlemek için rotalar tanımlamayı kolaylaştırır. Bir POST isteğini işlemek için bir rota ekleyelim. index.js
dosyanızı aşağıdaki kodla güncelleyin:
// '/data' adresine POST isteklerini işlemek için bir rota işleyicisi tanımlayın
fastify.post('/data', async (request, reply) => {
const payload = request.body;
// Gelen verileri işleyin
// Şimdilik, alınan verileri geri yansıtalım
return { receivedData: payload };
});
Şimdi, Fastify sunucumuz hem kök URL'ye (/
) yapılan GET isteklerini hem de /data
uç noktasına yapılan POST isteklerini işleyebilir.
JSON verileriyle yanıt verme
Tanımladığımız her iki rota işleyicide ('/'
ve '/data'
), Fastify'nin yerleşik yanıt yöntemlerini kullanarak JSON verileriyle yanıt veriyoruz. Fastify, JavaScript nesnelerini otomatik olarak JSON'a serileştirir ve yapılandırılmış verileri yanıt olarak göndermeyi kolaylaştırır.
Bu eklemelerle, Fastify sunucumuz artık temel HTTP isteklerini işleyebilir ve JSON verileriyle yanıt verebilir.
Ancak POST
isteğini nasıl test ederiz? Tarayıcıdan bir POST
isteğini test edemeyiz, değil mi?
Bize yardımcı olması için Apidog kullanacağız.
Ücretsiz bir hesaba kaydolabilir, web arayüzünü deneyebilir veya yeni oluşturduğunuz API'leri test etmek için masaüstü uygulamasını indirebilirsiniz.
Apidog'u nasıl kullanacağınızı anlamanıza yardımcı olmak için, işte iyi yazılmış bir kılavuz. Uzun konuşmayı ve okumayı atlamak için, bu bölüme göz atabilirsiniz - bu bizim için şu anda en önemli bölüm.
Yukarıdaki kılavuzu izlediyseniz, Apidog'a büyük ölçüde aşina olmalısınız.

Projenin sayfasından isteğe dokunun ve Fastify sunucusundan oluşturduğumuz API'yi test edebileceksiniz.

Yukarıdaki ekran görüntüsünden görebileceğiniz gibi, HTTP yöntemini POST olarak ayarlamanız, doğru URL'yi girmeniz (sunucunuzun hala çalıştığından emin olun) ve gövde yükünüzü girmeniz gerekir.
Yukarıdaki adımları doğru bir şekilde izlemek, size bir 200 yanıt kodu verecek ve yanıtı görebileceksiniz.
Her şey sizin için yolunda giderse, benim aldığım gibi aynı yanıtı almalısınız.
Ara Yazılım ve Eklentiler
Fastify'de Ara Yazılıma Giriş
Fastify'deki ara yazılım işlevleri, istek ve yanıt nesnelerine erişimi olan ve bir sonraki ara yazılım işlevine veya rota işleyicisine kontrolü geçirmeden önce günlüğe kaydetme, kimlik doğrulama, veri ayrıştırma vb. gibi görevleri gerçekleştirebilen işlevlerdir. Ara yazılım işlevleri, uygulamaya eklendikleri sıraya göre yürütülür.
Özel Ara Yazılım İşlevleri Oluşturma
request
, reply
ve next
parametrelerini kabul eden işlevler tanımlayarak Fastify'de özel ara yazılım işlevleri oluşturabilirsiniz. İşte özel bir günlüğe kaydetme ara yazılımına bir örnek:
// Özel günlüğe kaydetme ara yazılımı
const loggerMiddleware = async (request, reply, next) => {
console.log(`[${new Date().toISOString()}] ${request.method} ${request.url}`);
next();
};
// Ara yazılımı Fastify ile kaydedin
fastify.use(loggerMiddleware);
Bu örnekte, loggerMiddleware
işlevi, her gelen isteğin zaman damgasını, HTTP yöntemini ve URL'sini kaydeder. Daha sonra kontrolü bir sonraki ara yazılım işlevine veya rota işleyicisine geçirmek için next()
işlevini çağırır.
Ara Yazılımın Node.js ve Express.js gibi diğer çerçevelerinde tamamen çalışma şekli budur.
Fastify Eklentilerini Yükleme ve Kullanma
Fastify, kimlik doğrulama, veritabanı entegrasyonu, doğrulama vb. gibi çeşitli amaçlar için işlevselliğini genişleten zengin bir eklenti ekosistemi sağlar. Fastify eklentilerini npm aracılığıyla yükleyebilir ve kullanabilirsiniz. İşte bir eklentiyi yükleme ve Fastify ile kaydetme şekli:
npm install fastify-auth fastify-cors
// Gerekli eklentileri içe aktar
const fastifyAuth = require('fastify-auth');
const fastifyCors = require('fastify-cors');
// Eklentileri Fastify ile kaydedin
fastify.register(fastifyAuth);
fastify.register(fastifyCors);
Bu örnekte, kimlik doğrulama için fastify-auth
ve Çapraz Kökenli Kaynak Paylaşımı (CORS) desteği için fastify-cors
olmak üzere iki eklenti yükledik ve kaydettik.
Ama durun. Bunu test etmeyeceğiz. Bunlar sadece Fastify'de ara yazılım ve eklentilerin nasıl yükleneceğini ve çalıştırılacağını gösteren örneklerdir.
Ara yazılım ve eklentiler hakkında daha fazla bilgi edinmek için işte bir makale. Kendi araştırmanızı ve bulgularınızı yapabilirsiniz. Sadece karıştırmayın. Node.js ve Fastify'deki ara yazılım geniş bir konudur.
Hata İşleme
Fastify Rotalarında Hataları İşleme
Fastify'de, rota işleyicilerinde hataları, hataları atarak veya eşzamansız işlevlerden döndürerek işleyebilirsiniz. Fastify, bu hataları otomatik olarak yakalar ve istemciye uygun bir hata yanıtı gönderir. İşte bir örnek:
// Hata işlemeli rota işleyicisi
fastify.get('/error', async (request, reply) => {
// Bir hatayı simüle et
throw new Error('Oops! Bir şeyler ters gitti.');
});
Bu örnekten, bir kullanıcının mevcut olmayan veya başka bir şey olan bir /error'a gitmesi durumunda, bir hata atabilir ve kullanıcının neler olduğunu bilmesini sağlayabiliriz.
Meraklıysanız (olmalısınız), hatalar hakkında daha fazla bilgi edinmek için işte bir makale.
Fastify'deki ara yazılım, eklentiler ve hata işleme özelliklerinden yararlanarak, web uygulamalarınızın ve API'lerinizin işlevselliğini ve güvenilirliğini artırabilirsiniz. Bu özellikler, kodunuzu modülerleştirmenize, yeniden kullanılabilir bileşenler eklemenize ve hataları zarif bir şekilde işlemenize olanak tanıyarak daha bakımı yapılabilir ve sağlam uygulamalara yol açar.
Sonuç
Bu eğitimde, Node.js için hızlı ve düşük maliyetli bir web çerçevesi olan Fastify'ye kapsamlı bir giriş yaptık. İşte keşfettiğimiz temel konuların bir özeti:
- Fastify'ye Giriş: Fastify'yi ve performans avantajları, kullanımı kolay API'si ve zengin eklenti ekosistemi dahil olmak üzere diğer Node.js çerçevelerine göre avantajlarını tartışarak başladık.
- Fastify'yi Kurma: npm kullanarak Fastify'yi yükleme, yeni bir Fastify projesi başlatma ve proje yapısını keşfetme sürecini adım adım izledik. Bu, Fastify uygulamaları oluşturmak için temeli oluşturdu.
- Basit Bir Sunucu Oluşturma: Temel bir Fastify sunucusunun nasıl kurulacağını, farklı HTTP yöntemlerini işlemek için rotalar nasıl ekleneceğini ve JSON verileriyle nasıl yanıt verileceğini gösterdik. Bu, Fastify'de rotaları tanımlamanın ve istekleri işlemenin basitliğini ve esnekliğini gösterdi.
- Ara Yazılım ve Eklentiler: Fastify'de ara yazılım kavramını tanıttık ve özel ara yazılım işlevlerinin nasıl oluşturulacağını gösterdik. Ek olarak, kimlik doğrulama ve CORS desteği gibi özellikler eklemek için eklentileri yükleyip kullanarak Fastify'nin işlevselliğinin nasıl genişletileceğini tartıştık.
- Hata İşleme: Rotalardaki hataların nasıl işleneceği, Fastify'nin yerleşik hata işleme özelliklerinin nasıl kullanılacağı ve istisnaları yönetmek ve istemcilere anlamlı hata yanıtları sağlamak için özel hata işleme mantığının nasıl uygulanması dahil olmak üzere Fastify'de hata işlemeyi ele aldık.
Bu eğitim sayesinde, Fastify ile web uygulamaları ve API'ler oluşturmaya başlamak için bilgi edindiniz. Fastify'nin temel özelliklerini, istekleri ve yanıtları nasıl işleyeceğinizi, çerçeveyi eklentilerle nasıl genişleteceğinizi ve hataları etkili bir şekilde nasıl yöneteceğinizi öğrendiniz. Bu becerilerle, Fastify'nin daha gelişmiş özelliklerini keşfetmek ve verimli, ölçeklenebilir web uygulamaları oluşturmak için iyi bir donanıma sahipsiniz.
Fastify ile çalışmaya devam ederken, mevcut kapsamlı belgeleri ve eklenti ekosistemini keşfetmeyi unutmayın. Fastify topluluğu aktif ve destekleyicidir ve becerilerinizi geliştirmenize ve sağlam uygulamalar oluşturmanıza yardımcı olacak çok sayıda kaynak sunar.
Fastify ile ilgili bu eğitimi takip ettiğiniz için teşekkür ederiz. İyi kodlamalar!