Node.js ile RESTful API (Representational State Transferful Application Programming Interface) oluşturmak oldukça kolaydır. İşte basit bir örnek:
Öncelikle Express
kütüphanesini yükleyin:
npm install express
Ardından, app.js
dosyanızı oluşturun ve Express
kütüphanesini uygulamanıza dahil edin:
const express = require('express');
const app = express();
Şimdi, bir GET
isteği için bir endpoint oluşturalım:
app.get('/api/users', (req, res) => { const users = [ { id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }, { id: 3, name: 'Bob Smith' } ]; res.json(users); });
Bu kod, /api/users
endpoint'inde bir GET
isteği geldiğinde users
adlı bir diziyi döndürür.
Şimdi, bir POST
isteği için bir endpoint oluşturalım:
app.post('/api/users', (req, res) => { // Kullanıcının verilerini burada işleyin
res.send('Kullanıcı eklendi.'); });
Bu kod, /api/users
endpoint'inde bir POST
isteği geldiğinde yeni bir kullanıcı oluşturur ve Kullanıcı eklendi.
mesajını döndürür.
Son olarak, uygulamanızın dinlemeye başlamasını sağlayın:
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Sunucu ${PORT} numaralı bağlantı noktasında çalışıyor.`));
Bu kod, uygulamanızın PORT
değişkeninde belirtilen bağlantı noktasını dinlemesini sağlar.
Tüm bu kodlar bir araya getirildiğinde, basit bir Node.js RESTful API örneği şu şekilde olacaktır:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 5000;
app.get('/api/users', (req, res) => { const users = [ { id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }, { id: 3, name: 'Bob Smith' } ]; res.json(users); });
app.post('/api/users', (req, res) => { // Kullanıcının verilerini burada işleyin
res.send('Kullanıcı eklendi.'); });
app.listen(PORT, () => console.log(`Sunucu ${PORT} numaralı bağlantı noktasında çalışıyor.`));
Bu örnekte, GET
isteği /api/users
endpoint'inde bir dizi kullanıcı döndürürken, POST
isteği /api/users
endpoint'inde bir kullanıcı oluşturur ve mesaj döndürür. Bu şekilde, Node.js ile RESTful API oluşturmak oldukça kolaydır.
Daha kapsamlı bir Node.js RESTful API örneği de verelim. Örneğimizde, Express
kütüphanesi kullanarak bir books
koleksiyonu yöneten bir API oluşturacağız. Bu API, GET
, POST
, PUT
ve DELETE
isteklerini destekleyecektir.
Öncelikle, mongoose
kütüphanesini yükleyin. Bu kütüphane, MongoDB'ye erişim sağlamak için kullanılır:
npm install mongoose
Ardından, app.js
dosyanızı oluşturun ve gerekli kütüphaneleri dahil edin:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());
Bu kod, Express
ve mongoose
kütüphanelerini dahil eder ve body-parser
modülünü kullanarak gelen isteklerdeki JSON verilerini ayrıştırır.
Şimdi, MongoDB veritabanına bağlanın:
mongoose.connect('mongodb://localhost/books', { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true
}).then(() => { console.log('MongoDB veritabanına bağlanıldı.'); }).catch((err) => { console.log('MongoDB veritabanı bağlantısı başarısız. Hata:', err); });
Bu kod, mongoose
kütüphanesi kullanarak MongoDB veritabanına bağlanır.
Şimdi, Book
modelimizi tanımlayın:
const bookSchema = new mongoose.Schema({ title: { type: String, required: true }, author: { type: String, required: true }, published_date: { type: Date, required: true }, pages: { type: Number, required: true } });
const Book = mongoose.model('Book', bookSchema);
Bu kod, mongoose
kütüphanesi kullanarak Book
modelini tanımlar.
Şimdi, GET
istekleri için bir endpoint oluşturalım:
app.get('/api/books', (req, res) => { Book.find((err, books) => { if (err) { console.log('Kitaplar alınırken hata oluştu. Hata:', err); res.sendStatus(500); } else { res.json(books); } }); });
app.get('/api/books/:id', (req, res) => { const id = req.params.id;
Book.findById(id, (err, book) => { if (err) { console.log(`Kitap ${id} alınırken hata oluştu. Hata:`, err); res.sendStatus(500); } else if (!book) { console.log(`Kitap ${id} bulunamadı.`); res.sendStatus(404); } else { res.json(book); } }); });
Bu kod, GET
isteklerini işler ve /api/books
endpoint'inde tüm kitapları, /api/books/:id
endpoint'inde belirli bir kitabı döndürür.
Şimdi, POST
istekleri için bir endpoint oluşturalım:
app.post('/api/books', (req, res) => { const book = new Book(req.body);
book.save((err) => { if (err) { console.log('Kitap kaydedilirken hata oluştu. Hata:', err); res.sendStatus(500); } else { res.sendStatus(201); } }); });
Bu kod, POST
isteklerini işler ve /api/books
endpoint'inde yeni bir kitap kaydeder.
Şimdi, PUT
istekleri için bir endpoint oluşturalım:
app.put('/api/books/:id', (req, res) => { const id = req.params.id;
Book.findByIdAndUpdate(id, req.body, { new: true }, (err, book) => { if (err) { console.log(`Kitap ${id} güncellenirken hata oluştu. Hata:`, err); res.sendStatus(500); } else if (!book) { console.log(`Kitap ${id} bulunamadı.`); res.sendStatus(404); } else { res.json(book); } }); });
Bu kod, PUT
isteklerini işler ve /api/books/:id
endpoint'inde belirli bir kitabı günceller.
Son olarak, DELETE
istekleri için bir endpoint oluşturalım:
app.delete('/api/books/:id', (req, res) => { const id = req.params.id;
Book.findByIdAndDelete(id, (err, book) => { if (err) { console.log(`Kitap ${id} silinirken hata oluştu. Hata:`, err); res.sendStatus(500); } else if (!book) { console.log(`Kitap ${id} bulunamadı.`); res.sendStatus(404); } else { res.sendStatus(204); } }); });
Bu kod, DELETE
isteklerini işler ve /api/books/:id
endpoint'inde belirli bir kitabı siler.
Bu şekilde, Express
ve mongoose
kütüphanelerini kullanarak Node.js RESTful API oluşturabilirsiniz. Tabii, güvenlik önlemlerini ve doğrulama işlemlerini de unutmamalısınız.
RESTful API'lerde güvenlik büyük bir öneme sahiptir. API'lerinize erişim yetkilerini kontrol etmek için kimlik doğrulama ve yetkilendirme işlemlerini gerçekleştirmeniz gerekir. Bu işlemleri gerçekleştirmek için Express
kütüphanesiyle birlikte kullanabileceğiniz birçok güvenlik kütüphanesi mevcuttur.
Örneğin, passport
kütüphanesi, Node.js uygulamaları için kimlik doğrulama ve yetkilendirme işlemlerini kolaylaştıran bir kütüphanedir. passport-local
stratejisiyle, kullanıcı adı ve şifreyle kimlik doğrulama işlemlerini gerçekleştirebilirsiniz.
Ayrıca, helmet
kütüphanesi, Express uygulamaları için bazı önemli güvenlik önlemlerini sağlar. Örneğin, HTTP başlıklarında güvenliği artıran önlemler, CORS
desteği, XSS
saldırılarına karşı koruma, CSRF
saldırılarına karşı koruma vb.
Son olarak, API'lerinizi test etmek için Postman
gibi araçları kullanabilirsiniz. Bu araçlar, API'lerinizi farklı isteklerle (GET, POST, PUT, DELETE vb.) test etmenizi ve yanıtlarını gözlemlemenizi sağlar.
Özetle, Node.js ile RESTful API oluşturmak oldukça kolay ve hızlı bir şekilde gerçekleştirilebilir. Ancak, güvenlik ve doğrulama işlemlerini de göz önünde bulundurarak API'lerinizi oluşturmalı ve test etmelisiniz.