node.js Express ile RESTful API Geliştirmek
#MongoDB, #Mongoose, #Express, #Node.js, #CRUD, #RESTful API, #JavaScriptBugü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
)
Sadece bir not getirmek (GET /notes/:noteId
)
Yeni bir not oluşturmak (POST /notes
)
Not silmek (DELETE /notes/:noteId
)
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