Everion Consulting
Everion Consulting
Ana SayfaBlogNode.js ile REST API Oluşturma

Node.js ile REST API Oluşturma

Node.js ile REST API Oluşturma
Said Enes Subaşı

Said Enes Subaşı

6 Temmuz 2025

Veritabanı YönetimiNode.jsAPI Geliştirme

REST API nedir?

REST API’ler istemcilerin sunucularla veri alışverişi yaparken HTTP kullanabilmesine olanak sağlayan ve çok sık kullanılan bir yaklaşımdır. Node.js JavaScript kodunu web tarayıcınızın dışında çalıştırmanıza olanak sağlayarak sunucu taraflı JavaScript geliştirmeyi mümkün kılar.

1.Ortamın Ayarlanması

Öncelikle Node.js in bilgisayarda kurulu olduğuna emin olunmalıdır. Eğer yoksa https://nodejs.org adresinden istenilen LTS sürümü indirilip kurulabilir. Bu işlem tamamlandıysa projenin kurulacağı bir klasör oluşturulmalı ve terminalden içine girilmelidir.

mkdir node-rest-api
cd node-rest-api

2.Projenin Başlatılması ve gereken paketlerin kurulması

Projenin başlatılması için şu  komut girilmelidir.

npm init -y

Bu komut package.json dosyasını oluşturur. Ardından Express kütüphanesi kurulmalıdır.

npm install express

Geliştirme ortamı için veriler değiştirildikçe sisteme otomatik olarak gelmesini sağlamak için nodemon eklentisi de kurulabilir.

npm install --save-dev nodemon

3.Ana dosyanın oluşturulması 

touch index.js

İlk oluşan dosya içeriği genelde şu şekildedir:

const express = require('express');
const app = express();
const PORT = 3000;
app.use(express.json());
app.get('/', (req, res) => {
   res.send('REST API Çalışıyor!');
});
app.listen(PORT, () => {
   console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor`);
});

4.REST API metotları

Örnek bir index.js dosyasının oluşturulduğunu düşünelim. Bu index.js Node.js ile yazılan sunucu uygulamasının başlangıç noktasıdır ve oluşturulduktan sonra;

  • express'in import edilmesi
  • app.listen(..) yapılarak sunucunun çalıştırılması
  • api yollarının tanımlanması
  • middlewares eklenmesi

İlk aşamalarda burada gerçekleşir.

Api metotlarına gelinecek olursa ilk index.js oluşturulduktan sonra;

const express = require('express');
const app = express();
const PORT = 3000;
app.use(express.json());
let users = [
 { id: 1, name: 'Ali' },
 { id: 2, name: 'Ayşe' }
];
  1. GET ile tüm verileri listeleme

    app.get('/users', (req, res) => {
     res.json(users);
    });

    Postman kullanılarak test edilebilir.

    GET http://localhost:3000/users
  2. GET ile tek kullanıcıyı getirme 

    app.get('/users/:id', (req, res) => {
     const user = users.find(u => u.id == req.params.id);
     user ? res.json(user) : res.status(404).send('Kullanıcı bulunamadı');
    });

    Örnek olarak;

    GET http://localhost:3000/users/2
  3. POST ile yeni kullanıcı ekleme

    app.post('/users', (req, res) => {
     const { name } = req.body;
     const newUser = { id: users.length + 1, name };
     users.push(newUser);
     res.status(201).json(newUser);
    });

    Örnek olarak;

    POST http://localhost:3000/users
    Body (JSON):
    {
     "name": "Mehmet"
    }
  4. PUT ile kullanıcı bilgisi güncelleme

    app.put('/users/:id', (req, res) => {
     const user = users.find(u => u.id == req.params.id);
     if (user) {
       user.name = req.body.name;
       res.json(user);
     } else {
       res.status(404).send("Kullanıcı bulunamadı.");
     }
    });

    Örnek olarak;

    PUT http://localhost:3000/users/1
    Body:
    {
     "name": "Yeni Ali"
    }
  5. PATCH ile sadece belirli alanları güncelleme

    app.patch('/users/:id', (req, res) => {
     const user = users.find(u => u.id == req.params.id);
     if (user) {
       if (req.body.name) user.name = req.body.name;
       res.json(user);
     } else {
       res.status(404).send("Kullanıcı bulunamadı.");
     }
    });

    Örnek olarak;

    PATCH http://localhost:3000/users/2
    Body:
    {
     "name": "Ayşe Yılmaz"
    }
  6. DELETE ile kullanıcıyı silme

    app.delete('/users/:id', (req, res) => {
     const userIndex = users.findIndex(u => u.id == req.params.id);
     if (userIndex !== -1) {
       users.splice(userIndex, 1);
       res.send("Kullanıcı silindi.");
     } else {
       res.status(404).send("Kullanıcı bulunamadı.");
     }
    });

    Örnek olarak;

    DELETE http://localhost:3000/users/2

işlemleri bahsedildiği gibi gerçekleştirilebilir.

Proje nasıl daha modüler hale getirilir?

Projenin devamında oluşturulacak projenin genel yapısı şu şekilde incelenebilir.

/project-root

├── index.js
├── routes/
│   └── userRoutes.js
├── controllers/
│   └── userController.js
├── models/
│   └── userModel.js
├── db/
│   └── connection.js
├── middlewares/
│   └── authMiddleware.js
├── utils/
│   └── helpers.js
 

  • controllers/userController.js

    Önemli fonksiyonlar burada tanımlanır.

    const getAllUsers = (req, res) => {
     res.json([{ id: 1, name: 'Ali' }]);
    };
    const createUser = (req, res) => {
     const user = req.body;
     res.status(201).json(user);
    };
    module.exports = { getAllUsers, createUser };
  • routes/userRoutes.js

    Api adresleri ve endpointler burada tanımlandıktan sonra tekrardan index.js içerisine gönderilebilir.

    const express = require('express');
    const router = express.Router();
    const userController = require('../controllers/userController');
    router.get('/', userController.getAllUsers);
    router.post('/', userController.createUser);
    module.exports = router;
  • models/userModel.js

    Veritabanı modeli burada tanımlanır.

    const mongoose = require('mongoose');
    const userSchema = new mongoose.Schema({
     name: String,
     email: String
    });
    module.exports = mongoose.model('User', userSchema);
  • db/connection.js

    Veritabanına bağlanma işlemleri burada ele alınır.

    const mongoose = require('mongoose');
    mongoose.connect(process.env.MONGO_URI)
     .then(() => console.log('Veritabanına bağlandı'))
     .catch(err => console.error(err));
  • middlewares/authMiddleware.js

    Giriş kontrolü, yetkilendirme gibi ara katman işlemleri burada gerçekleştirilir.

    const auth = (req, res, next) => {
     const token = req.headers.authorization;
     if (token === 'secrettoken') {
       next(); // devam et
     } else {
       res.status(401).send('Yetkisiz');
     }
    };
    module.exports = auth;
  • utils/helpers.js

    Küçük yardımcı fonksiyonlar burada tanımlanır.

    function capitalize(text) {
     return text.charAt(0).toUpperCase() + text.slice(1);
    }
    module.exports = { capitalize };

Bu rehberde temellerden başlanılarak gerçek bir proje mimarisine kadar olan yapı gösterilmiştir. Sadece çalışan bir API değil aynı anda sürdürülebilir,test edilebilir ve genişletilebilir bir sistem kurmaya  bu blog yazısı incelenerek başlanılabilir.

Kaynakça

https://www.w3schools.com/nodejs/nodejs_intro.asp

https://nodejs.org/en/docs

Node.js ile REST API Oluşturma | Everion Consulting