Bu öğretici, Node.js, Express.js ve MongoDB kullanarak RESTful bir API oluşturma sürecinde size rehberlik edecektir. Ortamınızı kurmayı, API uç noktalarını tanımlamayı ve veri kalıcılığını ele almayı kapsayacağız. Sonunda, genişlemeye hazır işlevsel bir API’niz olacak.
İçerik Tablosu
- REST API’leri ve MongoDB’ye Giriş
- Geliştirme Ortamınızı Kurma
- Proje Kurulumu ve Bağımlılıklar
- MongoDB’ye Bağlanma
- API Uç Noktalarını Tanımlama (CRUD İşlemleri)
- API’nizi Test Etme
- Sağlam Hata Yönetimi Uygulama
- Sonuç ve Sonraki Adımlar
REST API’leri ve MongoDB’ye Giriş
REST (Representational State Transfer), ölçeklenebilir ve sürdürülebilir web servisleri oluşturmak için bir mimari stildir. REST API’leri, URL’ler tarafından tanımlanan kaynaklarla etkileşim kurmak için standart HTTP yöntemlerini (GET, POST, PUT, DELETE) kullanır. MongoDB, veri saklama ve alma için esneklik sağlayan NoSQL, belge yönelimli bir veritabanıdır. Bu kombinasyon, birçok uygulama için güçlü bir temel oluşturur.
Geliştirme Ortamınızı Kurma
Başlamadan önce, Node.js ve npm (Node Package Manager)’ın yüklü olduğundan emin olun. Bunları nodejs.org adresinden indirebilirsiniz. Ayrıca, MongoDB’nin yüklü ve çalışır durumda olduğundan emin olun. Bunu mongodb.com adresinden indirebilirsiniz.
Proje Kurulumu ve Bağımlılıklar
Yeni bir proje dizini oluşturun ve terminalinizde ona gidin. Yeni bir Node.js projesi başlatın:
npm init -y
Gerekli bağımlılıkları yükleyin:
npm install express mongoose body-parser
express
: Minimal ve esnek bir Node.js web uygulaması çerçevesi.mongoose
: MongoDB ve Node.js için bir Nesne Veri Modellemesi (ODM) kütüphanesi.body-parser
: JSON istek gövdelerini ayrıştırmak için ara yazılım.
MongoDB’ye Bağlanma
server.js
adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
// MongoDB bağlantı dizisi - bağlantı ayrıntılarınızı buraya girin
const mongoURI = 'mongodb://localhost:27017/mydatabase';
mongoose.connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB'ye bağlandı'))
.catch(err => console.error('MongoDB'ye bağlanırken hata:', err));
app.use(bodyParser.json());
app.listen(port, () => console.log(`${port} numaralı bağlantı noktasında dinleniyor`));
API Uç Noktalarını Tanımlama (CRUD İşlemleri)
Öğeleri yönetmek için basit bir model ve uç noktalar oluşturalım. Bunu server.js
dosyanıza ekleyin:
const ItemSchema = new mongoose.Schema({
name: String,
description: String
});
const Item = mongoose.model('Item', ItemSchema);
// POST /items - Yeni bir öğe oluştur
app.post('/items', async (req, res) => {
try {
const newItem = new Item(req.body);
const savedItem = await newItem.save();
res.status(201).json(savedItem);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// GET /items - Tüm öğeleri al
app.get('/items', async (req, res) => {
try {
const items = await Item.find({});
res.json(items);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// GET /items/:id - ID'ye göre tek bir öğe al
app.get('/items/:id', async (req, res) => {
try {
const item = await Item.findById(req.params.id);
if (!item) return res.status(404).json({ message: 'Öğe bulunamadı' });
res.json(item);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// PUT /items/:id - Bir öğeyi güncelle
app.put('/items/:id', async (req, res) => {
try {
const updatedItem = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
if (!updatedItem) return res.status(404).json({ message: 'Öğe bulunamadı' });
res.json(updatedItem);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// DELETE /items/:id - Bir öğeyi sil
app.delete('/items/:id', async (req, res) => {
try {
const deletedItem = await Item.findByIdAndDelete(req.params.id);
if (!deletedItem) return res.status(404).json({ message: 'Öğe bulunamadı' });
res.json({ message: 'Öğe silindi' });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
API’nizi Test Etme
API uç noktalarınızı test etmek için Postman veya curl gibi araçları kullanın. Yeni öğeler oluşturmak için /items
adresine POST istekleri gönderin, tüm öğeleri almak için /items
adresine GET istekleri gönderin ve ID’lerini kullanarak tek tek öğeler için GET, PUT ve DELETE istekleri kullanın.
Sağlam Hata Yönetimi Uygulama
Örnek kod, temel hata yönetimini içerir. Üretim için daha kapsamlı hata yönetimi, günlüğe kaydetme ve giriş doğrulama uygulayın.
Sonuç ve Sonraki Adımlar
MongoDB ile temel bir REST API’sini başarıyla oluşturdunuz! Kimlik doğrulama, yetkilendirme, veri doğrulama ve daha gelişmiş hata yönetimi ekleyerek bunu genişletin. Üretim hazır bir veritabanı bağlantısı kullanmayı ve hem Express.js hem de Mongoose’un daha gelişmiş özelliklerini keşfetmeyi düşünün.