Fastify'e Başlarken: Basit Bir API Oluşturmak

Fastify, Node.js için hızlı, düşük maliyetli web uygulamaları ve API'ler geliştirmeye odaklı bir web çerçevesidir.

Efe Demir

Efe Demir

5 June 2025

Fastify'e Başlarken: Basit Bir API Oluşturmak

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ı:

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:

  1. 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.
  2. 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.

Sunucu çıktısından "Hello World" metnini gösteren bir sayfa.

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.

💡
Apidog, API'leri Tasarım, Hata Ayıklama, Test Etme, Belgeleme, Mock ve ve Oluşturmak için kullanabileceğimiz bir API yönetim aracıdır.
button

Ü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.

Bir İstek başlatmak için Apidog'un sayfası

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

Apidog istek sayfası

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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!

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin