Node.JS, MongoDB, Express.JS kullanarak REST API hazırlama

Sercan Ozbek
5 min readAug 16, 2021

--

Merhaba bugün sizlere günümüzde backend teknolojisi olarak adından çokça bahsettiğimiz Node.JS ile REST API hakkında bilgi vereceğim.

REST API hazırlama olayına girmeden önce Node.JS, MongoDB, Express.JS hakkında bilgi vermek istiyorum.

Node.JS

Node.JS 2009 yılında geliştirilen ve açık kaynak kodlu olup sunucu tarafında çalışan teknolojidir. Node.JS istemci tarafında görmeye alıştığımı JavaScript dili kullanılarak geliştirilmektedir.Günümüzde Netflix,Paypal, LinkedlN gibi bir çok firma Node.JS kullanmaktadır.

Node JS Resmi Sitesi ve Daha Fazla Bilgi İçin;

Express.JS

Express.JS Node.JS için gelişitirilen bir frameworktür. Express.JS kullanarak HTTP isteklerini (PUT,POST,GET,DELETE),routing işlemlerini çok hızlı ve kolay bir şekilde yapabilmekteyiz.Express.JS kullanmadan da Node.JS de isteklerimizi direkt atabiliriz ama Express.JS’in sağladığı kolaylık ile geliştirme süreci daha hızlı ilerlemektedir.

Express.JS Resmi Sitesi ve Daha Fazla Bilgi İçin;

MongoDB

MongoDB 2009 yılında geliştirilen açık kaynak kodlu NoSQL veri tabanıdır. NoSQL veritabanı olarak Cassandra, BigTable isimli bir çok teknoloji bulunmaktadır ama MongoDB kaynak olarak ve kullanım olarak daha rahat olduğu için şuanda daha popüler durumdadır.

MongoDB Resmi Sitesi ve Daha Fazla Bilgi İçin;

REST Api Nedir?

REST Api geliştiricilerin HTTP (Get, Delete, Post,Put) yöntemlerini kullanarak çeşitli istekler de bulunup geriye sonuçlar döndüren sistemdir.

Örnek vermek gerekirse https://jsonplaceholder.typicode.com/posts url’ine gittiğimiz zaman Get isteğinde bulunuruz ve oda bize bir JSON data döner.

Dönen data’nın formatı JSON veya XML olabilir. Günümüzde daha hızlı olması nedeniyle JSON daha çok kullanılmaktadır.

Projemizi Oluşturalım? (Product Projesi)

Projemizde basit olarak ürünler listelenecek, yeni ürün eklenecek, ürün silinecek, var olan bir ürün güncellenecektir.

Ayrıca projede .env dosyası kullanmayı da anlatacağım.

product isimli bir klasör oluşturalım. VS Code veya herhangi bir IDE aracılığıyla klasörü açalım. Komut ekranını açarak “express product“ yazalım.(Eğer bilgisayarınızda express yok ise “npm -g express-generator” komutu ile bilgisayarımıza kuralım).

Komut ekranından cd product diyerek projenin içerisine girelim. Daha sonra komut ekranından ”npm install” diyerek gerekli paketleri kuralım.Projeyi test etmek için “npm start” diyelim. Tarayıcıya localhost:PORT_NUMARASI girerek projenin çalışıp çalışmadığını kontrol edebiliriz.

Mogoose Paket Kurulumu

MongoDB bağlantısını kurabilmek için Node.JS için hazırlanan güzel bir paket vardır. “npm install mongoose” diyerek paketi kuruyoruz.

Veri Tabanı Bağlantısını Oluşturma

Projenin içerisine helpers isminde bir klasör oluşturalım. Helpers klasörü altına db.js isminde bir dosya oluşturalım.Klasöre ayarları çekmeden önce MongoDB ye giderek yeni veri tabanı oluşturalım.

MongoDB connect diyerek yeni veri tabanı bağlantısını oluştururken bizlere bağlantı için bir URL verecek bunu proje içerisinde kullanacağız.

Bu url’de <password> yazan kısıma database’i oluştururken belirlediğimiz şifreyi vereceğiz. myFirstDatabase yazan yere de database’in adını vereceğiz.

Daha sonra projemizde .env dosyasını kullanabilmek için “npm install dotenv” yazarak env’i install edelim.

dot env ‘yi kurduktan sonra projede .env isimli bir dosya oluşturarak bir değişkende database url’ini tutalım. .env de tutmamızın sebebi projemizi commitler iken bunu .gitignore sayesinde göndermeyeceğiz. Böylece istenmeyen kişilerin projenin şifresini görmesini de engelleyeceğiz.

.env dosyası ekteki gibi olabilir.

.env klasöründe bu işlemi yaptıktan sonra oluşturmuş olduğumuz db.js klasörüne gelerek aşağıdaki kodu yazıyoruz.

Burada dotenv ile .env klasöründe ki değer DBURL isminde bir değişkene atanarak connect kısmında kullanılır.

Önemli olan bir nokta app.js içerisinde db.js dosyasını aktif hale getirmek gerekmektedir. Bunun için şu kodu üst kısımlarda bir yere yazmamız gerekmektedir; “const db = require(‘./helpers/db’)()”

Eğer tüm işlemleri doğru bir şekilde yaptıysanız. “npm start” komutu yazdığınız zaman console’a MongoDB: Connected yazmaktadır.

Model Dosyası Oluşturma

Projemizde model dosyamızı oluşturacağız. models isminde bir dosya oluşturup altına productModel.js isminde bir klasör oluşturalım.

Burada productSchema isminde bir model oluşturduk ve bu modelde isim, fiyat, ürün sayısı, ürün açıklaması ve ürünün oluşturma ,güncellenme tarih saat bilgisini tutan alanları modele ekledik. name alanı zorunlu ve unique bir alan olarak tanımlandı. timestamps alanı ise bize ürünün eklenme ve güncellenme zamanını verecektir.

Route Dosyası Oluşturma

routes dosyası altına product isminde bir klasör açıyoruz. Bu klasör içerisinde tüm GET,POST,PUT,DELETE işlemlerini yapabileceğiz.

İlk olarak yukarıda ki kodda da görüldüğü üzere express route kullanıldı. Daha sonra modeli sayfaya dahil ettik.

İlk olarak GET methodunu kullandık. Başarılı ise geriye dataları döndük hatalı ise geriye hata mesajı döndük.

İkinci olarak POST metodunu kullandık. Burada new product ile yeni product modeli oluşturduk. Bu modele kullanıcının request’ten gönderdiği body kısmındaki alanları sıralı bir şekilde göndererek kaydetme işlemi başarılı ise başarılı mesajı hatalı ise hata mesajı döndük.

Üçüncü olarak PUT metodunu kullandık. Burada route params olarak id yi alıyoruz, id ye göre product listesindeki ürünü güncelliyoruz.

Dördüncü olarak DELETE metodunu kullandık.Burada route params olarak id yi alıyoruz, id ye göre product listesindeki ürünü siliyoruz.

Burada önemli nokta router’ı kullanabilmek için app.js de çağırmamız gerekmektedir. 18.Satırda route aktif hale getirilmiştir.

Proje içerisinde limit kullanarak gelecek olan JSON verisinin boyutu ayarlanabilir.

POSTMANDE PROJEYİ TEST ETME

GET METODU
POST METODU

NOT: Projenizi github’a commitler iken dikkat etmeniz gereken nokta .env dosyasınızı commite göndermemeniz gerekmekte yoksa başka şahıslar database şifrenize erişebilir. Bunu engellemek için proje klasörünüz altına .gitignore isimli bir klasör oluşturalım ve içerisine .env yazalım böylece env klasörünü githuba göndermeyecektir.

SONUÇ

Sizlere Node.JS hakkında bilgi vermeye çalıştım. Bir sonraki yazımda Node.JS projemizi ücretsiz olarak nasıl heroku’ya deploy edebileceğimizi anlatacağım.

Projenin Github Linki ;

--

--

Sercan Ozbek
Sercan Ozbek

No responses yet