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