NodeJS ile RESTful API

NodeJS ile RESTful API

NodeJS ile RESTful API

NodeJS ile RESTful API

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.