Bir CRUD API, verileri dört temel veritabanı işlemi aracılığıyla yönetir: oluşturma, okuma, güncelleme ve silme. Yalnızca Express ve bir PostgreSQL veritabanıyla basit bir CRUD API oluşturabilirsiniz.

Node, PostgresSQL ve Express Kullanarak CRUD API Oluşturma

PostgreSQL’i bağlayacağınız bir Express sunucusu oluşturarak başlayın. Ardından, CRUD işlevlerini oluşturun ve bunları API uç noktalarına bağlayın. Bunu yaptıktan sonra, Node’u PostgreSQL’e bağlayabilecek ve her rotada veritabanı sorguları gerçekleştirebileceksiniz.

API Oluşturmak için Ön Koşullar

Bu eğiticiyi takip etmek için yapmanız gerekenler:

Node’u makinenize kurun.

PostgreSQL sunucusunu makinenize kurun.

Temel Express.js bilgisine sahip olmak .

Ekspres Sunucu Oluşturma

Bir Ekspres sunucu oluşturmak için, yeni bir dizin oluşturup onu girerek başlayın:

mkdir notes

cd notes

Ardından npm’yi başlatın:

npm init -y

Bu komut , notlar klasöründe bir package.json dosyası oluşturur. Son olarak, Express’i yükleyin.

npm install express

index.js adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin.

const express = require(“express”);

const app = express();

app.use(express.urlencoded({

 extended: true

}));

app.use(express.json())

app.listen(3000, () => console.log(“Listening on port 3000”));

Bu, 3000 numaralı bağlantı noktasını dinleyen yeni bir sunucu oluşturacaktır.

Bir PostgreSQL Veritabanı Oluşturun

noteb adında bir PostgreSQL veritabanı oluşturmak için psql komut isteminde aşağıdaki komutu yürütün.

postgres=# CREATE DATABASE notedb;

Tüm Postgres veritabanlarını listelemek için bu komutu çalıştırın ve noteb veritabanını oluşturup oluşturmadığınızı kontrol edin:

postgres=# l

Veritabanına Bağlan

Her şeyden önce, Düğüm uygulamanızı PostgreSQL sunucusuna bağlayın . node-Postgres modülünü kullanabilirsiniz.

npm aracılığıyla yüklemek için aşağıdakileri çalıştırın:

npm install pg

İyi bir uygulama olarak, veritabanına ayrı bir dosyada bağlanın.

db.js adında yeni bir dosya oluşturun ve aşağıdakini ekleyin.

const { Client } = require(“pg”);

const { user, host, database, password, port } = require(“./dbConfig”);

const client = new Client({

 user,

 host,

 database,

 password,

 port,

});

client.connect();

module.exports = client;

Burada, veritabanıyla iletişim kurmak için kullanacağınız bağlantı dizesini dışa aktarıyorsunuz. Veritabanı bağlantı ayarlarını dbConfig.js adlı bir yapılandırma dosyasından okuduğunuzu unutmayın . Bu nedenle, dbConfig.js’yi oluşturun ve aşağıdaki verileri buna ekleyin.

module.exports = {

 user: “{dbUser}”,

 host: “{dbHost}”,

 database: “notedb”,

 password: “{dbPassword}”,

 port: 5432,

};

Veritabanı ayrıntılarını kendi yerel değerlerinizle değiştirmeyi unutmayın.

Bir PostgreSQL Tablosu Oluşturun

psql komut isteminde, notlar adlı bir tablo oluşturun. Başlamak için c komutunu kullanarak noteb veritabanına bağlanın.

postgres=# c notedb

Ardından, CREATE TABLE komutunu kullanarak bağlı veritabanında bir tablo oluşturun.

notedb=# CREATE TABLE notes (

 ID SERIAL PRIMARY KEY,

 note VARCHAR(255)

);

Bu tablo oldukça basit. Yalnızca, otomatik oluşturulmuş bir birincil anahtar olan bir kimliği ve not adı verilen bir metin alanı vardır.

Bir Not Oluştur

Rotalarda CRUD işlemlerini yapmak yerine ayrı bir dosyada veritabanı ile etkileşim kuracak fonksiyonlar oluşturun.

helper.js adlı bir yardımcı dosya oluşturun ve bağlantı nesnesini db.js’den alın.

const client = require(“./db”);

createNote() işlevini oluşturmak için aşağıdaki kodu kullanın.

const createNote = (req, res) => {

 try {

  const { note } = req.body;

  if (!note) {

   throw Error(“Send note in request body”);

  }

  client.query(

   “INSERT INTO notes (note) VALUES ($1)”,

   [note],

   (err, data) => {

    res.status(201).json({

     error: null,

     message: “Created new note”,

    });

   }

  );

 } catch (error) {

  res.status(500).json({

   error: error.message,

   message: “Failed to create new note”,

  });

 }

};

Bu işlev, önce istek gövdesinin bir not içerip içermediğini kontrol eder. Not yoksa, bir hata atar.

Bir not oluşturmak için işlev INSERT yan tümcesini kullanır. Boş bir hata mesajı ve başarılı olursa bir başarı mesajı içeren bir JSON nesnesi döndürür.

Tüm Notları Al

Tablodaki tüm notları almak için SELECT * yan tümcesini kullanın.

const getNotes = (req, res) => {

 try {

  client.query(“SELECT * FROM notes”, (err, data) => {

   if (err) throw err;

   res.status(200).json({

    err: null,

    notes: data.rows,

   });

  });

 } catch (error) {

  res.status(500).json({

   err: error.message,

   notes: null,

  });

 }

};

getNotes(), sorgu başarılı olursa yanıt nesnesindeki notlar dizisini gönderir.

Kimliğe Göre Not Al

API ayrıca kimliğe göre bir not döndüren bir uç noktaya sahip olacaktır. helper.js’de bir getNoteById() işlevi ekleyin.

const getNoteById = (req, res) => {

 try {

  const { id } = req.params;

  client.query(“SELECT * FROM notes WHERE id=$1”, [id], (err, data) => {

   if (err) throw err;

   res.status(200).json({

    err: null,

    note: data.rows[0],

   });

  });

 } catch (error) {

  res.status(500).json({

   err: err.message,

   note: null,

  });

 }

};

Bu işlev, notu içeren bir JSON nesnesi ve bir hata nesnesi döndürür.

Kimliğe Göre Notu Güncelle

Bir notu güncellemek için bir nota ve o notun kimliğine ihtiyacınız vardır. Notu istek gövdesinden ve kimliği URL’den alacaksınız.

updateNoteById() işlevi, mevcut bir notu yeni bir notla güncellemek için UPDATE yan tümcesini kullanır.

const updateNoteById = (req, res) => {

 try {

  const { id } = req.params;

  const { note } = req.body;

  client.query(

   “UPDATE notes SET note = $1 WHERE id = $2”,

   [note, id],

   (err, data) => {

    if (err) throw err;

    res.status(201).json({

     err: null,

     message: “Updated note”,

    });

   }

  );

 } catch (error) {

  res.status(500).json({

   err: error.message,

   message: “Failed to update note”,

  });

 }

};

Bu işlev, tablo güncellendiyse bir başarı mesajı, değilse bir hata mesajı döndürür.

Kimliğe Göre Notu Sil

Bir notu kimliğe göre tablodan silmek için aşağıdaki kodu kullanın.

const deleteNote = (req, res) => {

 try {

  const { id } = req.params;

  client.query(“DELETE FROM notes WHERE id=$1”, [id], (err, data) => {

   if (err) throw err;

   res.status(200).json({

    error: null,

    message: “Note deleted”,

   });

  });

 } catch (error) {

  res.status(500).json({

   error: error.message,

   message: “Failed to delete note”,

  });

 }

};

Artık tüm CRUD işlevlerini oluşturduğunuza göre, bunları dışa aktarın.

helper.js’de aşağıdakileri ekleyin.

module.exports = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

API uç noktalarını oluştururken bunları index.js’ye içe aktaracaksınız.

API Rotaları Oluşturun

Son adım, CRUD işlemlerinin her biri için index.js’de API uç noktaları oluşturmaktır.

helper.js dosyasını içe aktararak başlayın.

const db = require(“./helper”)

Ardından, her uç noktayı oluşturun.

app.get(“/notes”, db.getNotes);

app.get(“/note/:id”, db.getNoteById);

app.put(“/note/:id”, db.updateNoteById);

app.post(“/note”, db.createNote);

app.delete(“/note/:id”, db.deleteNote);

Veritabanınızı Güncellemek İçin Bir REST API’si

İşiniz bittiğinde Postman gibi bir REST istemcisi kullanarak veya birim testleri yazarak API’nizin çalışıp çalışmadığını kontrol edebilirsiniz. Beş uç noktanın da beklediğiniz gibi çalıştığından emin olmalısınız.

Veritabanına eklediğiniz verileri pgAdmin aracını kullanarak da inceleyebilir ve yönetebilirsiniz. Veritabanı yönetimini gerçekleştirmeyi ve PostgreSQL sunucularıyla etkileşimi kolaylaştıran bir GUI uygulamasıdır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir