Node.js’de Restful Api Yazmak

Selamlar;

Daha önceki Node.Js nedir makalesinde nodeJS’e giriş yapmıştık. Hatırlayacağınız gibi Javascript kullanarak server side uygulamalar yazabileceğimiz, oluşturduğumuz web uygulamları ve servislerin büyük sayıdaki clientlera minimum kaynak harcıyarak hizmet verebildiği bir platformdur.

Bugün Node.Js’de Restful bir servisin nasıl yazılacağını hep beraber inceleyeceğiz. Kısa da olsa Restful servise değinmek istersek client ile server arasındaki veri alışverişini HTTP protokolü üzerinden sağlıyan, request işlemleri HTTP Methodları ile(POST,PUT,DELETE,GET)  ifade edilen bir yapıdır.

Bu uygulamada Node.Js’de en populer olan frameworklerden Express.js’i kullanacağız. Express.js, HTTP ile yapacağımız işleri kolaylaştıran, post işlemlerinin öncesi ve sonrasında yada authentication ve login işlemlerinde, önceden belirleyeceğimiz tanımlamaların her request’de çalıştırılmasını sağlayan bir yapı oluşturur.

Express.js NPM kullanılarak aşağıdaki gibi indirilebilir.

> npm install express

Aynı zamanda JSON istek yapılan sunucudan gelen JSON data’yı okuyabilmemiz için de body-parser’a ihtiyacımız vardır. NPM ile aşağıdaki komut ile indirilebilir.

> npm install body-parser

 Aşağıda express ve bodyParser  nesneleri tanımlanmıştır. Json data olarak cities nesnesine şehir isimleri ve ait oldukları ülkeler atanmıştır.

Şimdi sıra geldi server’ı 1923 portunda başlatmaya ve express.js üzerinde body-parser’ı çalıştırmaya. Bunun için aşağıdaki kod parçacığı yazılır.

Command satırına aşağıdaki komut yazılır. Ve server başlatılır.

> node server.js

port

Yukarıda görüldüğü gibi server başladı. Ve ilgili log console yazıldı. Şu noktada browser üzerinden bir işlem yapamayız. Herhangi bir endpoint yaratmadık. Aşağıda görüldüğü gibi GET işlemi ile tüm şehirleri listeleyebileceğimiz bir API oluşturulur.

Browser üzerinden http://localhost:1923:api/cities yazdığımız zaman aşağıdaki ekran görüntüsünü alırız.cities

Şimdi sıra geldi yeni bir şehir ekliyeceğimiz API’ye. Bu işlem için POST kullanılacak ve eklenecek olan şehirin var olan listede olup olmadığına bakılılacak. Eğer eklenecek şehir listede var ise “Bu şehir zaten kayıtlı” hata mesajı gönderilecek yok ise yeni şehir cities nesnesine eklenecek. İlgili kod aşağıdadır.

Post işlemini test etmek için ben Fiddler kullandım. Aşağıdaki screenshot’da POST API ile http://localhost:1923:api/cities adresine şehir adı: Tokyo ve Ülkesi: Japan olan bir json data gönderilmiştir.

Fiddler: Header’a “Content-Type: application/json” yazmayı unutmayın.

Post2

Browser’dan http://localhost:1923:api/cities Url adresine giriş yapıldığı zaman GET işlemi sonucu olarak aşağıdaki ekran görüntüsü alınır. Görüldüğü gibi yeni eklenen Tokyo şehiri ve ülkesi Japan listelenen cities nesnesine dahil olmuştur.

screen3

console

Aynı işlem için PUT methodu da aşağıdaki gibi kullanılabilir. Gene sonuçlar Fiddler’dan test edilebilir.

Görüldüğü gibi Node.Js ile Restful bir servis yazmak gayet kolaydır. Yeni bir makalede görüşmek üzere hoşçakalın.

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

11 Cevaplar

  1. Yigit dedi ki:

    Sayenizde node.js ‘e kolay bir giris yapmis oldum hocam.
    Elinize saglik.

  2. Kağan dedi ki:

    elinize sağlık. Node.js vs SignalR denilse sizin fikriniz ne olurdu?
    Birde signalR webineriniz gerçekten çok iyiydi teşekkürler. Özellikle sizin webinerleriniz çok öğretici oluyor.Umarım daha çok webiner yaparsınız.
    Teşekkürler

    • borsoft dedi ki:

      Selam Kağan;
      Öncelikle yorumların için teşekkürler.
      NodeJS ve SignalR’ı kıyaslamak tam doğru olmayabilir. Öncelikle amacının ne olduğunu ve nasıl bir sistemde çalşacağına göre değişiklik gösterecektir. NodJS’in sihirli bir değnek olduğu gibi bir kanı var ama malesef bu doğru değildir.

      İyi çalışmalar.

  3. Umut dedi ki:

    Bir uygulama yazdik ve veritabani amaciyla (100mb alti boyutta bir vt) json kullandik. Localhostumuzda bunlari yapabiliyoruz peki ucretli aldigimiz sunucularda ornegin hostgatorda bu islemleri nasil yapariz?
    Bir de en guncel vt baglantisi icin hangi kutuphaneleri kullaniriz. Bir cok kaynaka bakiyorum dersler onceki senelerden kalma ve deprecated olmus yontemler var. Aydinlatirsaniz sevinirim.

    • Yunus Emre BAKAÇ dedi ki:

      Şöyle ki, şu an aktif nodejs hosting veren varmı bilmiyorum, fakat hosting yerine linux bir vds/vps kiralayıp içerisine kuracaksın.
      Putty ile veya cmd>ssh sunucu.ip.adresi:22(port) -l root yazıp aldığın sunucuya giriş yapabilirsin ve nodejs teknolojisini kurabilirsin.

      Geç bir cevap oldu, 1,5 yıl kadar :)

  4. Metin dedi ki:

    Merhabalar şu şekilde bir sorum var,bugüne kadar apilerimi php ile yazıyordum.Nodejs denemek istiyorum ancak performans olarak nasıldır kestiremediğimden henüz cesaret edemiyorum.
    Aynı sunucu üzerinde hangisi daha performanslı olur.Sizin tecrübeniz varmı acaba ?

    • borsoft dedi ki:

      Selamlar,
      Node.js php’ye göre kesinlikle daha performanslı ama yazılması daha zor olacaktır.

      İyi çalışmalar.

  5. Furkan D dedi ki:

    Merhabalar,
    Bir mobil uygulama yapmak istiyorum 7 saniyede bir 10.000 kişinin konumunu alarak db ye kaydedecek.
    ilk önce mvc ile web api yazmıştım fakat performans anlamında nodejs geçmek istiyorum. sizce 7 sn de bir 10k konumu db yazması için nasıl bir alt yapı oluşturmam gerekir.Bu arada db mssql
    Teşekkürler.

    • borsoft dedi ki:

      Selam Furkan,
      Ne yaptın :):) 10000 kişi 7sn bir. Dakikada 600.000 request. Bir de paket içinde position.coords.latitude, position.coords.longitude dataları var.

      • Öncelikle telefonun şarjı fena halde tüketilir. Yani düşün 7 sn’bir ya push yapacak ya da servis gelip Mobil’den çekecek. deli pil yer. Bence süreyi uzat 1 dakka gibi
      • NodeJs yerine .NET Core 2.0’a geçebilirsin.
      • Write’ı hızlı bir Nosql DB’ye geç. Mesela Mongo 3.0

      İyi çalışmalar.

  6. Metin dedi ki:

    Selam… Faydalı oldu…
    Bi sormak istyiorum…
    jsonplaceholder api sitesini bilirsiniz…. orda img_url linkini alıp resimlere direk klasor yolunu gerekmeden img src içersinde gosterebiliyoruz yada kullana biliyoruz.. ama bizim yazdığımız restful apide resim klasor yolununda sisteme eklemeliyiz… işte kendi restful apimizde boyle bişeyi nasıl yaparız..

borsoft için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak.