Node.js ile REST API nasıl oluşturulur?

QuantumRuh

Onbaşı
Admin
Katılım
23 Kasım 2025
Mesajlar
1,003
Reaksiyon puanı
59
Modern web uygulamalarının omurgasını oluşturan REST API'ler, farklı sistemlerin birbiriyle iletişim kurmasını sağlayan standartlaşmış bir yapıdır. Özellikle hızlı, ölçeklenebilir ve eşzamansız uygulamalar geliştirmek isteyenler için Node.js, REST API oluşturma konusunda güçlü bir seçenektir. JavaScript'in sunucu tarafında çalışmasına olanak tanıyan Node.js, geniş paket ekosistemi ve performansı sayesinde geliştiricilere büyük kolaylıklar sunar. Bu makalede, Node.js ve Express.js kullanarak adım adım nasıl bir REST API oluşturulacağını detaylı bir şekilde inceleyeceğiz. Süreç boyunca, en iyi uygulamaları ve temel bileşenleri anlamanıza yardımcı olacak bilgiler aktarılacaktır. Hazırsanız, bu heyecan verici geliştirme yolculuğuna başlayalım.

### Giriş: REST API ve Node.js Neden Önemli?

REST (Representational State Transfer) API'ler, web hizmetleri arasında standart bir iletişim mimarisi sunar. Basit, durumsuz ve önbelleklenebilir yapısıyla, farklı platformlardaki uygulamaların kolayca entegre olmasını sağlar. Başka bir deyişle, mobil uygulamalarınız, web siteleriniz veya diğer arka uç servisleriniz bu API aracılığıyla veriye erişebilir ve veri işleyebilir. Node.js ise, Chrome'un V8 JavaScript motoru üzerine inşa edilmiş, olay tabanlı ve eşzamansız G/Ç modeli sayesinde yüksek performanslı ağ uygulamaları geliştirmek için idealdir. Bu nedenle, REST API geliştirme söz konusu olduğunda Node.js, özellikle gerçek zamanlı uygulamalar ve mikroservis mimarileri için hızlı ve verimli bir çözüm sunar. Sonuç olarak, bu iki teknolojinin birleşimi modern web geliştirme dünyasında güçlü bir ikili oluşturur.

### Node.js ve Express.js Kurulumu

REST API geliştirme yolculuğuna başlamadan önce, Node.js ve paket yöneticisi npm'in sisteminizde kurulu olması gerekir. Eğer kurulu değilse, Node.js resmi web sitesinden en güncel sürümü indirebilirsiniz. Kurulum tamamlandıktan sonra, projemiz için bir dizin oluşturup içine geçmeliyiz. Bu dizinde `npm init -y` komutunu çalıştırarak yeni bir `package.json` dosyası oluştururuz; bu dosya projemizin bağımlılıklarını ve meta verilerini içerir. Ardından, Node.js ekosisteminin en popüler web çatısı olan Express.js'i `npm install express` komutuyla kurarız. Express, basit ve esnek yapısıyla rotaları tanımlama, middleware kullanma ve HTTP isteklerini yönetme gibi temel API işlevlerini kolaylaştırır. Ek olarak, geliştirme sürecinde kodu her değiştirdiğimizde sunucuyu otomatik olarak yeniden başlatan `nodemon` paketini de `npm install nodemon --save-dev` komutuyla kurabiliriz; bu, geliştirme deneyiminizi önemli ölçüde iyileştirecektir.

### Temel Bir Express Uygulaması Oluşturma

Express.js kurulumunu tamamladıktan sonra, temel bir sunucu uygulaması oluşturmaya başlayabiliriz. Öncelikle, projemizin ana dizininde `app.js` veya `server.js` adında bir dosya oluştururuz. Bu dosyanın başında `const express = require('express');` satırı ile Express modülünü içeri aktarırız ve `const app = express();` ile bir Express uygulaması örneği yaratırız. API'mizin JSON verileriyle çalışabilmesi için `app.use(express.json());` middleware'ini eklemeyi unutmamalıyız; bu, gelen JSON istek gövdelerini otomatik olarak ayrıştırır. Ardından, basit bir GET rotası tanımlayarak sunucumuzun çalıştığını test edebiliriz: `app.get('/', (req, res) => { res.send('Merhaba REST API!'); });`. Son olarak, sunucumuzu belirli bir portta dinlemeye başlatırız, örneğin: `const PORT = process.env.PORT || 3000; app.listen(PORT, () => console.log(`Sunucu ${PORT} portunda çalışıyor.`));`. Bu adımlar, API'mizin temel iskeletini oluşturur.

### Veritabanı Entegrasyonu (Örnek: MongoDB ile)

Herhangi bir REST API'nin kalbi, verileri kalıcı olarak sakladığı bir veritabanına ihtiyaç duymasıdır. Bu bölümde, popüler NoSQL veritabanı MongoDB'yi Node.js uygulamamızla nasıl entegre edeceğimize odaklanacağız. MongoDB'yi Node.js ile kullanmak için Mongoose adlı bir ODM (Object Data Modeling) kütüphanesini tercih ederiz. Öncelikle, `npm install mongoose` komutuyla Mongoose'u kurmalıyız. Kurulumdan sonra, `app.js` dosyamızda veya ayrı bir yapılandırma dosyasında Mongoose'u içeri aktarıp `mongoose.connect('mongodb://localhost:27017/myapi', { useNewUrlParser: true, useUnifiedTopology: true });` kullanarak veritabanına bağlanırız. Bu bağlantı, uygulamamızın MongoDB ile veri alışverişi yapmasını sağlar. Ayrıca, veri modelimizi (örneğin, bir kullanıcı veya ürün şeması) Mongoose Schema kullanarak tanımlarız. Örneğin, basit bir ürün şeması oluşturup, API'mizin bu şemaya uygun verilerle çalışmasını sağlarız; başka bir deyişle, veritabanı ile uygulama arasında köprü kurarız.

### API Endpoınt'leri Tanımlama

REST API'lerin temel işlevi, belirli kaynaklar üzerinde CRUD (Create, Read, Update, Delete) operasyonları gerçekleştirmek için endpoint'ler sağlamaktır. Express.js, bu endpoint'leri tanımlamak için kolay bir yol sunar. Örneğin, bir ürün yönetimi API'si düşünürsek:
* **POST /api/urunler:** Yeni bir ürün oluşturmak için kullanılır. İstek gövdesinde ürün bilgileri gönderilir.
* **GET /api/urunler:** Tüm ürünleri listelemek için kullanılır.
* **GET /api/urunler/🆔** Belirli bir ürünün detaylarını almak için kullanılır. `:id` parametresi ile ürün ID'si belirtilir.
* **PUT /api/urunler/🆔** Mevcut bir ürünü güncellemek için kullanılır. İstek gövdesinde güncel bilgiler gönderilir.
* **DELETE /api/urunler/🆔** Belirli bir ürünü silmek için kullanılır.

Bu rotaların her biri, ilgili veritabanı operasyonlarını (kaydetme, bulma, güncelleme, silme) çağırarak isteklere yanıt verir. Bu nedenle, rotalarınızı mantıklı bir şekilde gruplandırmak ve kaynaklara özgü URL'ler kullanmak, API'nizin anlaşılırlığını artırır.

### Veri Doğrulama ve Hata Yönetimi

Güvenilir bir REST API için veri doğrulama ve kapsamlı hata yönetimi vazgeçilmezdir. Gelen isteklerin beklenen formatta ve geçerli verilerle olduğundan emin olmak, hem veri bütünlüğünü korur hem de uygulamanızın beklenmedik hatalardan korunmasına yardımcı olur. Örneğin, bir kullanıcı kayıt olurken e-posta adresinin doğru formatta olup olmadığını veya şifrenin minimum karakter sayısına uyup uymadığını doğrulamamız gerekir. Bu amaçla, `joi` veya `express-validator` gibi kütüphaneler kullanarak gelen verileri kolayca kontrol edebiliriz. Ayrıca, API'mizin kullanıcıya anlamlı hata mesajları döndürmesi önemlidir. Başka bir deyişle, başarılı bir işlemde 200 OK, kaynak bulunamadığında 404 Not Found, geçersiz veri gönderildiğinde 400 Bad Request gibi uygun HTTP durum kodları ile yanıt vermeliyiz. Genelleştirilmiş bir hata yakalama middleware'i oluşturarak, tüm uygulama genelindeki hataları merkezi bir yerden yönetebiliriz; bu, kod tekrarını azaltır ve hata ayıklamayı kolaylaştırır.

### API Test Etme ve Güvenlik İpuçları

Geliştirilen REST API'nin doğru çalıştığından emin olmak için test etmek kritik bir adımdır. Postman, Insomnia gibi araçlar veya Jest, Mocha gibi test çerçeveleri kullanarak API endpoint'lerinizi kolayca test edebilirsiniz. Her bir rotanın beklenen yanıtları döndürüp döndürmediğini, hataları doğru bir şekilde ele alıp almadığını kontrol etmelisiniz. Bununla birlikte, API güvenliği de asla göz ardı edilmemesi gereken bir konudur. Temel güvenlik ipuçları arasında, kullanıcı verilerini korumak için HTTPS kullanmak, hassas bilgileri ortam değişkenlerinde saklamak ve SQL enjeksiyonu veya XSS gibi saldırılara karşı girdi doğrulama ve sanitizasyon uygulamak bulunur. Ek olarak, API'nize erişimi kontrol etmek için JWT (JSON Web Tokens) tabanlı kimlik doğrulama mekanizmalarını entegre edebilirsiniz. Son olarak, DoS saldırılarını önlemek amacıyla istek sınırlama (rate limiting) uygulamak ve CORS (Cross-Origin Resource Sharing) politikalarını doğru yapılandırmak, API'nizin genel güvenliğini artırır.
 
Geri
Üst Alt