Golang, Gin ve MongoDB ile RESTful API Oluşturma
--
Bu yazımızda Go dilinde Gin framework’ünü kullanarak MongoDB ile haberleşen bir RESTful API uygulaması yapacağız.
Uygulamaya başlamadan önce Go’nun ve MongoDB’nin sisteminizde kurulu olması gerekmektedir. Eğer kurulu değilse aşağıdaki sayfalardan ilgili adımları takip ederek sisteminize kurabilirsiniz.
— Golang:
— MongoDB Community Server:
— MongoDB Compass:
Compass, MongoDB GUI’ı olarak arayüz aracılığı ile database’leri daha kolay yönetmemize olanak tanır.
Go Projesinde MongoDB ve Gin Framework’ün Ayarlanması
Gerekli kurulumları yaptıktan sonra main.go dosyası içerisinde aşağıdaki paket bilgileri tanımlanır. Bu yazımızda hazırlanacak olan servislerin dışarıya açılması için “Gin framework”ü kullanılırken, MongoDB bağlantısı için de “Mongo Driver” paketi kullanılmaktadır.
main.go dosyasında paket tanımlamalarını yaptıktan sonra bunların altında da MongoDB ile ilgili parametreler tanımlanır. MongoDB URI, Collection ismi ve Database ismi sabit olarak tanımlanırken CRUD işlemlerinde kullanılacak olan “collection” değişken olarak tanımlanır.
Go projesi çalıştırılacağı zaman öncelikle main metodunun yer aldığı kod bloğu çalışır.
Bu yazımızdaki örnekte main metodu içerisinde yer alan InitMongoDB metodunda database bağlantılarının oluşturulması için gerekli temel ayarlar yer almaktadır.
Bağlantı ayarları sağlandıktan sonra ilgili end-point’lerin dışarıya açılmasını sağlamak amacıyla da Gin framework’ünde yapılan gerekli router ayarlamaları aşağıda yer almaktadır.
Üzerinde CRUD işlemlerinin yapılacağı collection parametresi, InitMongoDB metodu içerisinde database bağlantısı yapıldıktan sonra ayarlanmaktadır.
CRUD İşlemlerinin Yapılması
CRUD işlemlerini yapabilmek için üzerinde çalışılacak struct yapısı alttaki gibidir.
User struct yapısında yer alan property’lerin bson ve json çevrimlerinde kullanılacak olan mapping tanımları da belirtilmelidir.
— Insert
Insert işleminde öncelikli olarak kullanıcının göndermiş olduğu input User struct’ına dönüştürülür. Akabinde collection üzerinden database’e kaydedilir. Başarılı olması durumunda kayıt edilen dokümanın “_id” bilgisi dönülmektedir.
Postman uygulamasından ilgili end-point’e User struct’ına uygun şekilde POST isteği yapıldığı zaman başarılı cevap alınmaktadır.
— Update
Insert işlemine benzer olarak update işleminde de request body içerisinde User’a ait güncelleme yapılacak bilgiler yer almaktadır. Ek olarak request’in yapılacağı end-point içerisinde parametre olarak güncellenecek dokümanın “uid” bilgisi de verilmelidir.
Postman üzerinden ilgili end-point’e PUT ile istek atıldığında, istek atılan adres içerisindeki “uid” bilgisine karşılık gelen doküman üzerinde aşağıdaki gibi güncelleme işlemi yapılmaktadır.
— Delete
Silme işleminde end-point içerisinde verilen “uid” bilgisine karşılık gelen doküman bulunarak o dokümanın silinmesi gerçekleştirilmektedir.
Postman üzerinden ilgili end-point’e DELETE ile istek atıldığında, istek atılan adres içerisindeki “uid” bilgisine karşılık gelen doküman silinir ve silinen dokümana ait bilgiler servis cevabında dönülmektedir.
— Get
Dokümanları listelemek için ilgili end-point içerisinde verilen “size” kadar karşılık gelen doküman database üzerinden çekilmektedir.
Bu yazımızda Golang ile Gin Framework kullanarak MongoDB üzerinde CRUD işlemlerine değinmiş olduk.
Golang, Gin Framework ve MongoDB Driver ile ilgili daha detaylı bilgiye aşağıdaki dokümantasyon sayfalarından ulaşabilirsiniz.
Bu içeriği arkadaşlarım Hakan Kıral, Mücahit Ballı ve Aysu Şevik ile birlikte oluşturduk. Umarız faydalı olmuştur.
Okuduğunuz için teşekkür ederiz…
Ele alınan örneğin kaynak kodlarına alttaki Github reposundan ulaşabilirsiniz.
Kaynaklar: