Gereksinimler ve Ön Hazırlık
Projeye başlamadan önce bilgisayarınızda belirli araçların kurulu olması gerekir. Node.js, JavaScript kodlarını tarayıcı dışında çalıştırmamızı sağlayan bir çalışma zamanı ortamıdır. Kurulum için şu adımları takip edin:
- Node.js (LTS Sürümü): Resmi web sitesinden güncel "Long Term Support" (Uzun Süreli Destek) sürümünü indirin.
- NPM veya Yarn: Node.js ile birlikte gelen paket yöneticisidir. Kütüphaneleri yönetmek için kullanılır.
- Kod Editörü: VS Code gibi modern bir editör, eklenti desteği sayesinde geliştirme sürecinizi hızlandırır.
Sisteminizde Node.js'in yüklü olup olmadığını doğrulamak için terminalinize şu komutu yazın:
node -v
npm -v
Bu komutlar, yüklü olan sürüm numaralarını ekrana getirmelidir. Eğer hata alıyorsanız, Node.js kurulumunuzu yeniden gözden geçirmeniz gerekecektir.
Adım Adım Proje Klasörü ve Paket Yapılandırması
Her Node.js projesi, bir package.json dosyası ile başlar. Bu dosya, projenizin kimlik kartıdır; bağımlılıkları ve çalışma komutlarını tutar. Proje dizininizi oluşturun ve terminalde şu adımları izleyin:
mkdir my-express-server
cd my-express-server
npm init -y
npm init -y komutu, varsayılan ayarları kullanarak otomatik bir package.json dosyası oluşturur. Şimdi, Express kütüphanesini projemize dahil etmemiz gerekiyor.
npm install express
Bu komut, node_modules klasörünü oluşturur ve Express kütüphanesini projenize ekler. Artık sunucu kodlarını yazmaya hazırsınız.
Express ile Temel Sunucu Kurulumu ve Örnek Kod
Sunucumuzu ayağa kaldırmak için bir index.js dosyası oluşturacağız. Express, HTTP isteklerini yönetmek için oldukça basit bir arayüz sunar. Aşağıdaki kod, basit bir "Merhaba Dünya" sunucusu oluşturur.
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Sunucu başarıyla çalışıyor!');
});
app.listen(PORT, () => {
console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor.`);
});
Bu kodda express() fonksiyonu ile uygulama nesnemizi oluşturduk. app.get ile ana dizine gelen istekleri karşıladık ve app.listen ile sunucuyu belirtilen portta dinlemeye başladık.
Yönlendirme (Routing) ve İstek Yönetimi
Gerçek dünya uygulamalarında tek bir rota yeterli olmaz. Farklı URL yolları (endpoint) üzerinden farklı işlemler yapmanız gerekir. Express, RESTful API standartlarına uygun olarak GET, POST, PUT ve DELETE gibi HTTP metotlarını kolayca yönetmenizi sağlar.
app.get('/api/kullanici', (req, res) => {
res.json({ id: 1, isim: 'Ahmet', rol: 'Admin' });
});
app.post('/api/mesaj', (req, res) => {
res.status(201).send('Mesaj alındı ve kaydedildi.');
});
Burada res.json() metodu ile istemciye JSON formatında veri gönderdik. Bu, modern web uygulamaları ve mobil uygulamalar ile haberleşirken kullanılan standart yöntemdir.
Ara Katman Yazılımı (Middleware) Kullanımı
Middleware, istek (request) ve yanıt (response) döngüsü arasında çalışan fonksiyonlardır. Güvenlik kontrolleri, loglama veya veri işleme için kullanılırlar. Örneğin, gelen veriyi JSON formatına çeviren bir middleware ekleyelim.
app.use(express.json()); // Gelen istek gövdesini JSON olarak ayrıştırır
app.use((req, res, next) => {
console.log(`${req.method} isteği geldi: ${req.url}`);
next(); // Bir sonraki fonksiyona geçişi sağlar
});
app.use(express.json()), özellikle POST isteklerinde veriyi okuyabilmemiz için kritik bir adımdır. next() fonksiyonu ise middleware zincirinin devam etmesi için zorunludur.
Geliştirme Yöntemlerinin Karşılaştırılması
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| Node.js Native (http) | Düşük seviyeli kontrol | Çok fazla kod tekrarı |
| Express.js | Hızlı geliştirme, geniş ekosistem | Ek kütüphane bağımlılığı |
| Fastify | Çok yüksek performans | Öğrenme eğrisi daha dik |
Kritik Güvenlik Uyarısı: Üretim ortamında (production) sunucunuzu çalıştırırken helmet gibi kütüphaneler kullanarak HTTP başlıklarını (headers) korumaya alın. Asla hata mesajlarını doğrudan istemciye (res.send(error)) göndermeyin; bu, sisteminiz hakkında saldırganlara ipucu verebilir.
Sıkça Sorulan Sorular
Express neden Node.js'in standart http modülüne tercih edilir?
Express, yönlendirme, middleware yönetimi ve şablon motorları gibi karmaşık işlemleri basitleştirerek geliştirme süresini ciddi oranda kısaltır.
Middleware nedir ve neden kullanılır?
Middleware, gelen isteği işleyen, değiştiren veya reddeden ara katmanlardır. Kimlik doğrulama, loglama ve hata yönetimi için kullanılır.
Sunucumu nasıl daha güvenli hale getirebilirim?
Kullanıcı girişlerini mutlaka doğrulayın (validation), SQL injection riskine karşı parametreli sorgular kullanın ve hassas verileri (şifreler gibi) asla düz metin olarak saklamayın.
Neden package.json kullanmalıyım?
Projenizin bağımlılıklarını yönetmek, sürüm takibi yapmak ve projenizi başka bir bilgisayara taşıdığınızda kolayca kurmak için zorunludur.
2026 itibariyle Express hala güncel mi?
Evet, Express minimalist yapısı ve devasa topluluk desteği sayesinde endüstri standardı olmaya devam etmektedir.
Express Uygulamalarında Hata Yönetimi ve Global Hata Yakalama
Express uygulamalarında hata yönetimi, uygulamanın çökmesini engellemek ve istemciye anlamlı hata mesajları döndürmek için kritik bir öneme sahiptir. Varsayılan olarak Express, hataları yakalayan yerleşik bir hata işleyiciye sahiptir, ancak profesyonel projelerde bu süreci özelleştirmek gerekir.
Hataları merkezi bir noktada yönetmek için, tüm middleware ve route tanımlarından sonra gelen özel bir hata işleme middleware'i tanımlamalısınız. Bu fonksiyon, Express'in standart hata yakalama mekanizmasını tetikleyen next(err) çağrısı ile çalışır.
// Merkezi Hata İşleyici Middleware
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(err.status || 500).json({
success: false,
message: err.message || "Sunucu tarafında bir hata oluştu.",
});
});
// Örnek kullanım: Bir rota içinde hata fırlatma
app.get('/veri-cek', (req, res, next) => {
const hata = new Error("Veri bulunamadı!");
hata.status = 404;
next(hata); // Hata işleyiciye gönder
});
Express Uygulamasını Yayına Alma (Deployment) İpuçları
Geliştirme ortamında çalışan bir Express uygulamasını canlı sunucuya taşırken dikkat etmeniz gereken performans ve güvenlik yapılandırmaları bulunmaktadır. Node.js'in tek iş parçacıklı (single-threaded) doğası gereği, üretim ortamında uygulamanızı optimize etmeniz şarttır.
1. Ortam Değişkenlerini Kullanın
Hassas verileri (API anahtarları, veritabanı şifreleri) kodun içine gömmeyin. dotenv kütüphanesini kullanarak bu bilgileri .env dosyasında saklayın.
2. Güvenlik Başlıklarını Ayarlayın
helmet kütüphanesi, HTTP başlıklarını uygun şekilde yapılandırarak uygulamanızı yaygın web açıklarına karşı korur. Kurulumu oldukça basittir:
const helmet = require('helmet');
const app = express();
// Tüm rotalardan önce çalıştırın
app.use(helmet());
3. İşlem Yönetimi (Process Management)
Uygulamanızın sunucu çöktüğünde otomatik olarak yeniden başlaması ve arka planda çalışmaya devam etmesi için PM2 gibi bir süreç yöneticisi kullanın. Aşağıdaki komut ile uygulamanızı yayına alabilirsiniz:
# PM2 kurulumu
npm install pm2 -g
# Uygulamayı başlatma
pm2 start server.js --name "express-app"
# Uygulamanın durumunu izleme
pm2 monit
4. Sıkıştırma (Compression) Kullanımı
Yanıt boyutunu küçültmek ve istemciye daha hızlı veri iletmek için compression middleware'ini kullanın. Bu, özellikle büyük JSON verileri gönderdiğinizde performans artışı sağlar.
const compression = require('compression');
app.use(compression());
Profesyonel İpucu: Üretim ortamındaNODE_ENVdeğişkeniniproductionolarak ayarladığınızdan emin olun. Bu, Express'in hata ayıklama bilgilerini gizlemesini ve performans optimizasyonlarını devreye almasını sağlar.
Sonuç
Node.js ile Express çatısını kullanarak sunucu kurulumu yapmak, modern web geliştirmenin temel taşıdır. Bu rehberde, kurulumdan middleware kullanımına kadar temel yapı taşlarını öğrendiniz. Artık kendi API'larınızı veya web servislerinizi oluşturmaya başlayabilirsiniz. Bir sonraki adım olarak, veritabanı bağlantıları (MongoDB veya PostgreSQL gibi) ile verilerinizi kalıcı hale getirmeyi ve JWT (JSON Web Token) kullanarak kimlik doğrulama sistemlerini araştırmanızı öneririm.
Sorumluluk Reddi: Bu makalede paylaşılan kod örnekleri eğitim amaçlıdır. Uygulamalarınızı yayına almadan önce güvenlik açıklarına karşı test etmeli ve güncel güvenlik yamalarını takip etmelisiniz. Yazılım güvenliği sürekli güncellenen bir süreçtir.

Yorumlar (0)
Yorum Yaz