Node.js ile Restful Web Servis (Bölüm 1)

Başlangıç

Web servisler artık projelerin olmazsa olmazı haline geldi. En temel anlamıyla bakarsak bunun nedeni gelişen yazılım sektörüyle platformaların çoğalması ve geliştirilen projenin tek bir platforma bağımlı olmamasıdır. Web servis konusuna çok girmeden ben direkt blog konumuza döneyim. Bu blog konusunu anlatırken şöyle bir örnek üzerinde ilerleyeceğiz. Bir barımız var ve biz bunun için GET, POST, DELETE ve UPDATE metodlarını kullanabileceğimiz, veritabanı ve üye girişi olan bir servis tasarlayacağız.

Bu blogda oluşturacağımız servis için Node, Express, MongoDB veritabanı ile iletişim için Mongoose, kimlik kontrolü içinse Passport kullanacağız.

Gerekli Yazılımların Yüklenmesi
  1. Node ve projede kullanacağımız paketleri indirebilmek için npm‘i cihazımıza kuruyoruz.
  2. Veritabanı içinse MongoDB kuruyoruz. Arzu ederseniz MongoDB üzerinde oluşturduğumuz kayıtları görebilmek için Robomongo kurabilirsiniz.
Uygulama Yapısı

Uygulamamızın yapısı temel olarak aşağıdaki gibi olacak.

bar
  models       //Modellerimizin olduğu klasör
    icecek.js
    kullanici.js
  node_modules //npm paketlerimiz (npm otomatik oluşturur)
  package.json //Ana node app ve bağımlılık tanımlarını içerir
  server.js       //Ana uygulama

node_modules klasörünü npm bizim için yönetecek. Bizim ekstradan birşey yapmamıza gerek yok.

npm ile Node Paketlerinin Yüklenmesi

npm Node paketlerinin yüklenebileceği, yönetibileceği bir Node paket yöneticisidir. Bu aşamada express yüklemek için kullanacağız. Peki nedir bu express? Express ile temel olarak servisimizin adreslerinin yönetimi, isteklerin cevaplanması ve görüntülenmesi gibi işlemleri yapacağız. Paketleri yüklemek için önümüzde 2 seçenek var.

1. Node Paketlerini Tanımlayarak

İhtiyacımız olan paketleri package.json dosyasında tanımlarız. Bunun için package.json dosyamız aşağıdaki gibi görünür.

{
  "name":"bar",
  "main":"server.js",
  "dependencies":{
    "express":"~4.1.1"
  }
}

Şimdi uygulamamızın kök dizininden npm’e dependencies kısmındaki paketleri yüklemesini söyleyeceğiz.

npm install

Bu komut tamamlandığında npm dependecies içinde tanımlı paketleri node_modules klasörüne indirecek.

2. Node Paketlerini Yükleyerek

Eğer kullanacağınız paketin versiyonunu bilmiyorsanız bu yöntemi kullanmak en iyisi. Az önceki gibi aşağıdaki gibi bir package.json dosyasını uygulamamızın ana dizininde oluşturuyoruz.

{
  "name":"bar",
  "main":"server.js",
  "dependencies":{    
  }
}

Aşağıdaki komutla manuel olarak istediğimiz paketi yüklüyoruz.

npm install express --save

Komutta ki –save ifadesi npm’e paket bağımlılığını package.json dosyasına eklemesini söyler. Bunun sonucunda package.json dosyası aşağıdaki gibi gözükür.

{
  "name":"bar",
  "main":"server.js",
  "dependencies":{ 
     "express":"^4.1.1"   
  }
}

Sizin dosyanızda ki paket versiyonu burada gözükenden farklı olabilir çünkü buradaki blog yazıldığı sıradaki son versiyonu gösterir.

Server Oluşturma

Gerekli yazılımları ve paketleri yükledik şimdi sıra geldi server’imizi oluşturmaya.

Eğer henüz server.js dosyasını oluşturmadıysanız, kök dizinde server.js dosyası oluşturun. server.js dosyanıza aşağıdaki kodları ekleyin.

//İhtiyacımız olan paketleri tanımlıyoruz
var express=required('express');

//Express uygulamamızı oluşturuyoruz
var app=express();

//Ortamın tanımladığı portu yada 3000 portunu kullan
var port=process.env.PORT||3000;

//Express yönlendiricimizi oluşturuyoruz
var yonlendirici=express.Router();

//Test için basit bir yol belirleyelim
//http://localhost:3000/api
yonlendirici.get('/',function(req,res){
  res.json({message:'Test yolumuz çalışıyor :)'});
});

//Tüm yönlendirmelerimizi /api yoluyla kaydediyoruz
app.use('/api',yonlendirici);

//Serveri başlat
app.listen(port);
console.log('Server '+port+' portu üzerinde çalışmaya başladı!');

Şimdi satır satır kodlarımızı açıklayalım.

Gerekli Paketlerin Eklenmesi
//İhtiyacımız olan paketlerin tanımlanması
var express=require('express');

Bu kod Express paketini yükleyecek ve uygulamamız içinde bize kullanma izni verecek. İleride buraya paketler eklemeye devam edeceğiz.

Express Uygulaması
//Express uygulamamızı oluşturuyoruz
var app=express();

Express uygulaması bizim web uygulamamızın ana parçasıdır. Yol tanımlama, http bağlantısı için dinleme başlatma, istekler için yönlendirme gibi diğer şeyler onun üzerinde olur.

Yol Tanımlama
//http://localhost:3000/api
yonlendirici.get('/',function(req,res){
  res.json({message:'Test yolumuz çalışıyor :)'});
});

‘/’ için mesaj olarak JSON nesne dönderen bir yol tanımlıyoruz.

Yönlendirici Kaydı ve Server Başlatma
//Tüm yönlendirmelerimizi /api yoluyla kaydediyoruz
app.use('/api',yonlendirici);

//Serveri başlat
app.listen(port);

Son olarak önceden kaydettiğimiz yolları ‘/api’ ön ekiyle kaydediyoruz. Bunun anlamı tüm yönlendirmelerimiz ‘/api’ ile başlayacak. Ve son adımda listen metodu ile gelen bağlantıları ve istekleri dinlemeye başlıyoruz.

Test Etme

Eğer yazdığınız herşey doğruysa serverimiz hatasız başlayacak ve isteklerimizi cevap verebilecek. Bunu öğrenmek için uygulamamızın kök dizininde aşağıdaki komutu çalıştırıyoruz.

node server.js

Konsol ekranında “Server 3000 portu üzerinde çalışmaya başladı!” mesajını görmeliyiz. Eğer bu mesajı gördüysek tarayıcımızda http://localhost:3000/api adresine gittiğimizde tanımladığımız mesajı göreceğiz. Ve böylece 1. bölümü tamamlamış oluyoruz. Hatayla karşılaşırsanız veya takıldığınız bir yer olursa yorum kısmından yazabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *