Node.js ile RESTful API Geliştirme

Node.js ile RESTful API Geliştirme

CodeMareFi'ye Hoş Geldiniz!Yazılım dünyasındaki en güncel ve işlevsel kodları sizlerle paylaşmaya devam ediyoruz. Bu makalemizde, projelerinizde zaman kazanmanızı sağlayacak ve sisteminizi bir üst seviyeye taşıyacak önemli bir konuyu detaylıca ele alacağız. Hazırladığımız bu rehber, hem yeni başlayanlar hem de profesyonel geliştiriciler için özenle derlenmiştir. Aşağıdaki adımları ve kod bloklarını dikkatlice uygulayarak projenize sorunsuz bir entegrasyon sağlayabilirsiniz. Hazırsanız, detaylara geçelim.
Node.js ile Backend Dünyasına Giriş

Sadece arayüz (Frontend) kodlamak yetmez. Modern uygulamalar veritabanıyla konuşan, güvenli ve hızlı çalışan API'lere ihtiyaç duyar. Express.js ile kendi REST API'mizi yazıyoruz.

Node.js, JavaScript'i tarayıcıdan çıkarıp doğrudan işletim sistemi üzerinde çalıştırmamızı sağlayan çalışma zamanı (runtime) ortamıdır. Express.js ise Node.js üzerinde web sunucuları ve API'ler oluşturmayı olağanüstü kolaylaştıran minimal bir web framework'üdür.

1. RESTful API Nedir?

REST (Representational State Transfer), sistemlerin birbiriyle internet üzerinden iletişim kurması için standartlaşmış bir mimari yapıdır. Temel HTTP metotlarını kullanır:

  • GET: Veri okumak / getirmek (Örn: Kullanıcıları listele)
  • POST: Yeni veri oluşturmak (Örn: Yeni üye kaydı)
  • PUT / PATCH: Mevcut veriyi güncellemek (Örn: Profil resmi değiştir)
  • DELETE: Veri silmek (Örn: Yorumu sil)

2. Express.js Projesini Başlatmak

Boş bir klasör oluşturup terminali açın ve projemizi ayağa kaldıralım:

# Package.json oluştur
npm init -y

# Gerekli paketleri kur
npm install express cors dotenv

# Geliştirme kolaylığı için nodemon'u kur (kod değiştikçe sunucuyu resetler)
npm install --save-dev nodemon

3. İlk Sunucumuzu Kodlayalım (server.js)

Proje dizininde server.js (veya index.js) dosyası oluşturun:

const express = require('express');
const cors = require('cors'); // Farklı domainlerden erişime izin verir
const app = express();

// Middleware'ler (Gelen istekleri işlemek için)
app.use(cors());
app.use(express.json()); // Gelen isteklerdeki JSON gövdesini (body) parse eder

// Basit bir bellek-içi (in-memory) veritabanı simülasyonu
let kullanicilar = [
  { id: 1, isim: 'Ahmet', meslek: 'Developer' },
  { id: 2, isim: 'Ayşe', meslek: 'Tasarımcı' }
];

// --- API ENDPOINT'LERI ---

// GET: Tüm kullanıcıları listele
app.get('/api/users', (req, res) => {
  res.status(200).json({ success: true, data: kullanicilar });
});

// GET: Tek bir kullanıcı bul
app.get('/api/users/:id', (req, res) => {
  const user = kullanicilar.find(u => u.id === parseInt(req.params.id));
  
  if (!user) {
    return res.status(404).json({ success: false, message: 'Kullanıcı bulunamadı' });
  }
  
  res.status(200).json({ success: true, data: user });
});

// POST: Yeni kullanıcı ekle
app.post('/api/users', (req, res) => {
  const { isim, meslek } = req.body; // İstemciden gelen veriyi al
  
  if (!isim || !meslek) {
    return res.status(400).json({ success: false, message: 'İsim ve meslek zorunludur' });
  }
  
  const yeniKullanici = {
    id: kullanicilar.length + 1,
    isim: isim,
    meslek: meslek
  };
  
  kullanicilar.push(yeniKullanici);
  res.status(201).json({ success: true, data: yeniKullanici });
});

// DELETE: Kullanıcı sil
app.delete('/api/users/:id', (req, res) => {
  const userId = parseInt(req.params.id);
  const kullaniciIndex = kullanicilar.findIndex(u => u.id === userId);
  
  if (kullaniciIndex === -1) {
    return res.status(404).json({ success: false, message: 'Kullanıcı bulunamadı' });
  }
  
  kullanicilar.splice(kullaniciIndex, 1);
  res.status(200).json({ success: true, message: 'Kullanıcı silindi' });
});

// Sunucuyu başlat
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor`);
});

4. API Nasıl Test Edilir?

Yukarıdaki kodu çalıştırdıktan sonra (node server.js), bir tarayıcıda http://localhost:3000/api/users adresine giderseniz JSON formatındaki veriyi doğrudan görebilirsiniz.

Ancak POST, PUT, DELETE gibi işlemleri tarayıcıdan test etmek zordur. Bunun için geliştiriciler Postman veya Insomnia gibi API test araçlarını kullanırlar. VS Code kullanıyorsanız "Thunder Client" eklentisini de yükleyebilirsiniz.

5. Gerçek Hayatta Mimari Nasıl Olur?

Yukarıdaki örnek her şeyi tek dosyaya yazar. Profesyonel projelerde "MVC (Model-View-Controller)" veya benzeri mimariler kullanılır:

  • Routes: Endpoint URL'lerini tanımlar (Örn: routes/userRoutes.js)
  • Controllers: İstek geldiğinde çalışacak mantığı içerir (Yukarıdaki fonksiyonların içi)
  • Models: Veritabanı (MongoDB, PostgreSQL) şemalarını tanımlar
Güvenlik ve İleri Seviye Tavsiyeler:

Herkese açık API'ler geliştirirken güvenlik çok kritiktir. İstekleri sınırlamak için express-rate-limit kullanın (DDoS saldırılarını önler). HTTP başlıklarını güvenli hale getirmek için helmet paketini kullanın. Kimlik doğrulama için JWT (JSON Web Token) standarttır.

Sonuç ve Değerlendirme

Bu makalemizde paylaştığımız kodlar ve teknik bilgiler, sisteminizin performansını artıracak ve sizlere daha esnek bir geliştirme imkanı sunacaktır. CodeMareFi üzerinden paylaştığımız tüm içerikler, güncel yazılım standartlarına uygun olarak optimize edilmiş olup, projelerinizde güvenle kullanabileceğiniz şekilde hazırlanmıştır.

Eğer kurulum sırasında herhangi bir sorunla karşılaşırsanız, kod çalışmazsa veya sisteme ekstra özellikler eklemek isterseniz, iletişim kanallarımızdan ya da Discord sunucumuza katılarak diğer geliştirici arkadaşlarımızdan anında destek alabilirsiniz. Daha fazla ücretsiz kod paylaşımı, web tasarım rehberleri ve teknoloji makaleleri için sitemizi takipte kalmayı unutmayın. İyi kodlamalar!

0 Yorum

YORUM YAPMAK İÇİN SİSTEME SIZMANIZ GEREKİYOR

Lütfen yukarıdaki butonu kullanarak giriş yapın veya kimlik oluşturun.

Yorumlar yükleniyor...