node.js Express ile RESTful API Geliştirmek

· Web , JavaScript ·

node.js

Bugün node.js ve Express kullanarak RESTful API’ları nasıl geliştirebileceğimizi temel olarak öğrenmeye çalışacağız.

 

Bilinmesi gereken kavramlar

İlk önce API kavramı nedir bunu ele almamız gerekir. API kavramının ingilizce olarak açılımına bakarsak Application Programming Interface olarak geçer, yani Uygulama Programlama Arayüzü olarak çevirebiliriz.

API’ları genelde program geliştiricileri birden fazla servisi bir arada kullanmak istediğinde kullanmaktadır. Günümüzdeki çoğu sistem API kullanarak çalışmaktadır. Bizim bugün API geliştirme sebebimiz ise next.js ile geliştireceğimiz basit uygulamanın backend servisini yazmak olacak. API testimiz için Postman uygulamasını kullanacağız. Altta linki mevcuttur.

Kılavuza devam etmeden önce JavaScript geliştirebildiğinize emin olun ve ES6 yeniliklerinden let, const ve arrow functions gibi yenilikleri öğrenin.

MongoDB üzerinde temel olarak bir bilginiz olması iyi olacaktır. Node.js üzerinde mongoose frameworkünü kullanarak ilerleyeceğiz.

Diğer bilmediğimiz kavram ise Express’in ne olduğu olabilir diye düşündüğümden onu da açıklayalım. Express, node.js üzerinde en yaygın olarak kullanılan web geliştirme frameworküdür. Minimal ve hızlı olması, temiz kod prensiplerini benimsemesi Express’i tercih edilebilir bir seçenek haline getirmektedir. Bizim için routing ve middleware işlemlerini çözmesi de güzel taraflarındandır. Bu sebepten Express ile ilerleyeceğiz.

Bu konular hakkında detaylı bilgi edinebileceğiniz kaynakları aşağıya bırakıyorum.

 

Araştırma yapabileceğiniz kaynaklar ve linkler

 

node.js ve Express kurulumu, sisteminizde bulunması gerekenler

İlk önce projemizi başlatabilmek için sisteminizde node.js ve npm/yarn paket yöneticilerinden birinin kurulu olması gerekmektedir. Ben npm tercih ettiğimden kılavuzdaki komutları npm olarak kullanacağım. Sisteminize nasıl kurulacağını Google üzerinden araştırabilirsiniz. (örnek arama cümleciği: windows nodejs kurulumu). Bu eksiği kapattıktan sonra veritabanı yönetim sistemimiz olarak ben MongoDB kullanmak istiyorum. Siz tercihinize göre diğer veritabanları için ORM’leri kullanabilirsiniz. (MySQL, MariaDB için Sequelize kullanılabilir.). Sisteminize MongoDB kurulumu gerçekleştirirseniz kolayca kılavuzu takip edebilirsiniz. Linux üzerinde MongoDB için devilbox kullanıyorum. Devilbox kurulumu ve kullanımını buraya tıklayarak takip edebilirsiniz.

 

RESTful API projesine başlangıç

Komutları Linux üzerinden anlatacağımı belirteyim ancak çok komplike olmadığından Windows ve macOS ile de eşleştirmeleri kolayca yapabilirsiniz.

Bugün temel olarak CRUD işlemlerini anlayabilmemiz için tek modelli bir uygulama geliştireceğiz. Ben basit olarak notları tuttuğumuz bir uygulama seçmek istedim. Siz isterseniz sadece yazılar modeline sahip bir uygulama geliştirip şemayı genişletebilirsiniz.

 

1. Terminalinizi açın, uygulamanız için bir klasör oluşturun.

$ mkdir node-express-app

 

2. Klasörünüzde package.json dosyasını oluşturun.

$ cd node-express-app

$ npm init

komutunu girdikten sonra önemli olan tek kısım şu anlık entry point kısmı, diğerlerine enter basıp geçebilirsiniz. Entry point seçeneğine server.js yazınız.

 

3. Express ve diğer paketlerin kurulumunu yapın.

$ npm install express body-parser mongoose –save

 

4. Kurulum işlemi tamamlandıysa klasörünüzde node_modules klasörü ve package.json dosyalarının oluşması gerekmektedir. Kontrol edin eğer problem yok gibi gözüküyorsa devam edebiliriz.

 

Express web sunucusunun kurulumu

Node.js geliştirebilmek için gereken temel adımları halledip paketlerimizi kurduğumuza göre klasörümüzü favori kod editörümüzde açarak devam edelim. Açtıktan sonra klasör içerisine server.js adında bir dosya oluşturun ve içeriğini şu şekilde tanımlayın:

Öncelikle express ve body-parser paket içeriye aktardık. Express’in ne olduğundan zaten bahsettik. Body-parser ise çeşitli içerik tiplerini Express üzerinde parse edip kullanmamızı sağlayan bir paket.

Ardından express uygulamamızı oluşturduk. İki tane body-parser middlewareını app.use() metodunu kullanarak express uygulamamıza tanımladık. Bu tanımladığımız middlewarein request ve response objelerine erişimi var, bu objeler üzerinde çeşitli işlemler gerçekleştirerek bizim kolayca işlemleri gerçekleştirmemizi sağlayacak.

Sonrasında bir adet GET rotası içeren hoşgeldin mesajlı basic bir rota oluşturduk.

En sonunda da 3000 portundan gelen istekleri dinleyeceğimiz web sunucumuzu başlattık.

 

Veritabanı erişimini konfigüre etmek ve bağlanmak

Öncelikle config adında bir klasör oluşturalım, veritabanı bağlantı cümlemizi bu klasöre ekleyeceğiz. Ardından bu klasörün içinde db.config.js adında bir dosya oluşturun, içeriği şu şekilde olsun:

module.exports = {

    url: 'mongodb://172.16.238.16:27017/backend-app'

}

Buradaki bağlantı cümlesi sizin sunucu konfigürasyonunuza göre değişebilir ancak devilbox üzerinde bağlantıyı bu şekilde sağlamaktayız.

Ardından aşağıdaki kod bloğunu server.js içerisinde app.use(bodyParser.json()) altına ekleyin.

Bu işlemin ardından node server.js komutunu çalıştırarak terminalden veritabanına bağlanabiliyor musunuz kontrol edin. Görmeniz gereken mesaj “Veritabanına bağlantı başarılı” tarzı olmalıdır.

 

Mongoose kullanarak model tanımlamak

Veritabanı bağlantı, basit server işlemleri gibi şeyleri hallettiğimize göre ilk modelimizi tanımlayabiliriz.

$ mkdir -p app/models

$ cd app/models

komutlarını giriyoruz ve bu klasör içerisinde note.model.js adında şu içeriğe sahip bir dosya oluşturuyoruz.

Gördüğünüz üzere not modelimiz gayet basit. Sadece başlık ve içerik olaraktan iki alan içermekte. Timestamps ise otomatik olarak iki alan ekliyor ve güncelleme/oluşturulma tarihlerini tutuyor.

 

Express kullanarak rotaları tanımlamak

Sırada rotalarımızı tanımlama işlemimiz var. app/routes klasörünü oluşturalım.

$ mkdir app/routes

$ cd app/routes

Şimdi note.routes.js adında bir dosya oluşturun ve içeriği şu olsun:

Ardından app.listen() satırından önce şu kısmı ekleyin:

require(‘./app/routes/note.routes’)(app)

Sunucuyu çalıştırmaya çalışırsanız başlamayacaktır çünkü rotalarımız için controllerimizi henüz tamamlamadık.

 

Kontrolcü fonksiyonlarını oluşturmak

app/controllers klasörünü oluşturun ve içerisine aşağıdaki içerikle note.controller.js dosyasını oluşturun.

Projemizde kullanılan Mongoose komutları için API dokümantasyonunu inceleyebilirsiniz.

 

Postman ile API test etmek

Veritabanına eklenmiş tüm notları almak. (GET /notes)

GET notes

 

Sadece bir not getirmek (GET /notes/:noteId)

GET by Id

 

Yeni bir not oluşturmak (POST /notes)

POST notes

 

Not silmek (DELETE /notes/:noteId)

Delete note

 

Sonuç

Bu yazımda temel olarak MongoDB, Express, Node stacki ile basit bir CRUD uygulaması nasıl geliştirebilirsiniz onu göstermeye çalıştım. Umarım faydalı olabilmişimdir. Sorularınızı yorum bölümünde belirtirseniz elimden geldiğince yardımcı olmaya çalışırım. Buraya kadar takip edenlere ayrıca teşekkür ediyorum :)

Projenin final hali: https://github.com/dogukanoksuz/express-mongo-crud-app