Node.js ve Express Generator ile Back-End Servis Yazma #1

i.faruk
Kodcular
Published in
3 min readJul 28, 2020

Merhaba arkadaşlar, medium’ da yayınlacağım ilk hikayeme Node.js ile başlamak istedim . Başlıkta belirtmiş olduğum gibi sadece Node.js ile back-end servis yazmakla kalmayıp aşağıdaki konular hakkında da geliştirmeler yapacağız. Bunlar ;

  • Mongo / Firebase Db entegrasyonları,
  • Unit test’ lerin yazılması,
  • Uygulamanın heroku / firebase hosting üzerine deploy edilmesi,
  • Build, test ve deploy süreçleri otomatizasyonu için Travis CI kullanımı.

Projemizde bir okul kütüphanesinin back-end servisini yazacağız ve yukarıdaki adımları bu proje üzerinde uygulayacağız. Ayrıca geliştirmiş olduğumuz projenin kaynak kodlarını github repo’ m üzerinden paylaşıyor olacağım.

Temel JavaScript bilginiz varsa kolaylıkla bahsedeceğim konularda geliştirme yapabilirsiniz. Bilgileriniz taze değil ise veya yeni başladıysanız, şuradaki bölümleri tamamlayıp gelmenizi tavsiye ederim.

Haydi başlayalım :)

Nedir bu Node.js ?

Node.js 2009 yılında geliştirilmeye başlanan ve birçok geliştiricinin katkısı ile bugünkü halini alan , sunucu tarafında (server-side) çalışan bir JavaScript Runtime platformudur.

Server-side’ ı biraz daha detaylandıracak olursak ; Chrome, Internet Explorer ya da Mozilla gibi sadece tarayıcılar tarafından çalıştırılabilen/yorumlanabilen JavaScript kodları, Node.js ile işletim sistemleri tarafından da çalıştırılıp/yorumlanabilir hale geldi.

“Event-driven ,non blocking I/O system” ifadelerini Node.js ile sık sık duymuşsunuzdur. Node.js, Event-driven özelliğini Event-based (olay tabanlı) programlama yaklaşımı ile kazanmıştır. Event-based; geliştirmiş olduğumuz kod içerisinde, tanımlanan olayların tetiklenmesi durumunda kodun, kalanından bağımsız çalışmasını sağlar. Bu özellik de dile asenkron bir özellik kazandırır. Kod parçacıkları bütünden bağımsız oldukları için bir başka işlemi beklemek zorunda kalmazlar, yani bloklanmazlar (non blocking).

Node.js kursu izlerken şu şekilde bir örnek duymuştum ; Muayene için hastaneye gidiyorsunuz ve öncesinde doldurmanız gereken bir form var. Size bu formu veren ve doldurduktan sonra geri alan sadece bir görevli var (Node.js’ in tek thread üzerinde çalışmasına benzetebiliriz). Siz formu aldıktan sonra , size başka bir yerde formu doldurup geri getirmenizi söylüyor ve hemen sizden sonra başka bir kişinin formunu alıyor. Böylelikle sizin formu tamamlama sürenizde kimseyi bekletmemiş oluyor.

Node.js ile yazılan kodlar, Google’ın geliştirmiş olduğu V8 JavaScript Engine ile makine koduna dönüştürülür.

NPM ?

Node Package Manager ya da Node Packaged Modules olarak açabileceğimiz Npm; açık kaynak kodlu ,JavaScript temelli modülleri içerisinde barındıran paket yönetim sistemidir. Komut satırından çalıştırılır ve kolaylıkla ilgili modülü projenize eklemenizi sağlar. (Nuget gibi düşünebilirsiniz.)

Express Paketi ile Basit Server Oluşturma

Npm’in en meşhur paketlerinden olan Express, Node.js’ de sunucu oluşturmanızı ,GET/POST/PUT/DELETE ve routing işlemlerini kolaylıkla yönetmenizi sağlar.

Express ile basit bir sunucu kurarak başlayalım. Öncelikle aşağıdaki komut ile proje bilgilerini içerisinde tutan package.json dosyasını oluşturalım. Bu komut ile paket adı, tanımı, versiyonu gibi bilgileri girebilirseniz veya komutun sonuna “-y” ekleyerek bu adımları geçebilirsiniz. ;

npm init

Şimdi express paketini yükleyelim.

npm install express

Paketi yükledikten sonra aşağıdaki kod parçacığı ile local’de 3000 portunda çalışan basit bir sunucu ayağa kaldırmış oluyoruz.

İnternet sağlayıcınız üzerinden “ http://localhost:3000/” adresine girerek “Hello World” yazısını görebilirsiniz. Şu adresten daha detaylı dökümana ulaşabilirsiniz. Biz geliştireceğimiz back-end servisinde “express-generator” ile temel bir iskelet yapısı inşa edeceğiz ve bu yapıya uygun olarak api uçları, db bağlantılarını ekleyeceğiz. Aşağıdaki komutu çalıştırarak başlayalım ;

npm install -g express-generator

“-g” ile npm’e global olarak kurmasını söylüyoruz(Proje içerisindeki node_modules klasörüne kurulmaz, kullanıcı klasörü altındaki node_modules’ e kurulur. Bu sayede her projede tekrar yüklememize gerek kalmaz).

Express-generator kurulumundan sonra aşağıdaki komutu girelim. Bize projenin boş olmadığını, devam edip/etmek istemediğimizi sorar. Buna evet deyip devam ettiğimizde projedeki oluşturduğumuz dosyaları siler ve iskeleti projeye ekler.

express .

Oluşan proje dizin yapısını inceleyecek olursak; gelen istekleri “app.js” üzerinden “routes” klasörü altındaki “router”’lara yönlendireğiz ve ilgili istekleri oluşturacağımız GET/POST/PUT/DELETE metodları ile karşılayacağız.

├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.pug
├── index.pug
└── layout.pug

Servis oluşturulduktan sonra “package.json” dosyası içerisinde bulunan script’te yapılan değişiklik sayesinde aşağıdaki komut projeyi ayağa kaldırır. İnternet sağlayıcınız üzerinden “ http://localhost:3000/” adresine gittiğinizde “Welcome to Express” yazısını görebilirsiniz.

npm start

Bu yazıda “express-generator”’i kullanarak temel bir api oluşturduk. Bir sonraki yazımızda “router”’ları projemize göre düzenleyeceğiz.

--

--