Gin Web Kütüphanesi
Gin Go'da yazılmış bir web kütüphanesidir. Performans ve üretkenlik odaklıdır. Sizlere basitçe web sunucu ve api oluşturmanız için kolaylık sağlar.
Kurulum için:
go get -u github.com/gin-gonic/gin
Daha sonra yine aynı yöntemle projemize dahil edebiliriz.
Basit bir web sunucu oluşturma örneği:
Programımızı çalıştırdığımızda aşağıdaki gibi konsol çıktısı alacağız.
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
using env: export GIN_MODE=release
using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET / --> main.index (3 handlers) [GIN-debug] Listening and serving HTTP on :8080
Bu çıktıyı incelediğimizde, Gin'in debug (hata ayıklama) modunda çalıştığını söylüyor ve hemen aşağısında sunucumuz ürün haline gelince Gin'i Release Moduna nasıl alacağımızı gösteriyor. Son olarak ise web sunucumuzun 8080
portunda çalıştığınız gösteriyor.
Yukarıdaki örnekte web sunucumuz varsayılan olarak 8080
protunda çalışacaktır. Bunun sebebi router.Run()
'a parametre olarak port numarası vermememizdir.
Örneğe göre http://localhost:8080 adresine gittiğimizde komut satırında yeni detaylar belirecek. Tıpkı aşağıdaki gibi:
Bu bilgileri inceleyelim. İlk kayıt anasayfaya bağlanılmaya çalışıldığında alınmış. Bu kayıtta bağlantının zamanını, durum kodunu, bağlantı süresi, bağlantı yöntemini ve hangi adrese bağlantı denendiğini yazıyor. Hemen altındaki ise sitenin ikonuna istek yapmış fakat site ikonumuz bulunmadığı için 404 durum kodunu almış. Bu kısımdan da bağlantı isteklerini görebildiğimizi öğrenmiş olduk.
🔘 Çıktı Tipleri
➡️ JSON Çıktı Verme
Sonucumuz aşağıdaki gibi olacaktır.
➡️ XML Çıktı Verme
Bu kodlar sonucunda sayfamızı açtığımızda "kaankuşcu" sonucu göreceğiz. XML tipinde görmek için sayfanıza sağ tıklayıp "Sayfa Kaynağını Gör"e tıklayarak kontrol edebilirsiniz.
➡️ Template Kullanımı
Template hakkında bilginiz yoksa önce aşağıdaki dökümanı okumanız önerilir.
HTML Şablonlar (Templates)Gin'de template (şablon) işlemleri bayağı kolaylaştırılmış. Ufak bir örnek uygulama yazalım. Öncelikle projemizin ana dizinine templates
isimli bir klasör oluşturalım ve içerisine index.html
dosyası oluşturalım. index.html
dosyamızın içeriği ise aşağıdaki gibi olsun.
Burada {{ .başlık }}
yerine Go'dan değer göndereceğiz.
main.go
dosyamız ise aşağıdaki gibi olsun.
Web sunucumuza bağlandığımızda ise Anasayfa yazdığını görebiliriz.
🔘 Statik Dosyaları Yayınlama
Web sunucumuzda kullanacağımız Css, JS vb. statik dosyalarımız olabilir. Bunun için Static
fonksiyonunu kullanabiliriz.
Statik dosyalarımızı projemizin ana dizindeki statik
klasöründe barındırdığımızı varsayalım.
statik
klasörümüzün içerisinde index.js
adında bir dosya olduğunu varsayarsak http://localhost:9000/static/index.js
adresinden ulaşabiliriz.
🔘 Bağlantı Metodları
Örnek bağlantı oluştururken GET metoduna değindik. Metodları test ediyorken Postman'i kullanabilirsiniz. Ben bu konuda curl komut satırı aracını kullanacağım. Detaylarına bakacak olursak:
➡️ GET Metodu
GET
metodu web sunucumuza normal bağlantı yapılırken kullanılır. Hazır bir kaynağı yüklemek için kullanılır.
index
fonksiyonu ile GET
metodlu anasayfayı yakalayabilirsiniz.
➡️ POST Metodu
POST metodu genellikle form gönderimlerinde kullanılır. Yeni bir kaynak oluşturmak için kullanılır. (Yeni kayıt oluşturma, yeni gönderi oluşturma vb...)
Örnek kullanımını görelim.
Yukarıdaki örnekte anasayfa GET
ile bağlanıldığında getIndex
, POST
ile bağlanıldığında postIndex
fonksiyonu çalışacak. Tarayıcımızdan girdiğimizde "GET metodu ile bağlanıldı." yazısını görürüz. POST
metodu ile bağlanmak için komut satırına şu komutları yazalım.
curl -X POST http://localhost:9000
Çıktısı "POST metodu ile bağlanıldı." olacaktır.
POST metodu üzerinden değer almayı görelim.
Komut satırına aşağıdaki komutu yazarak çıktısını görebilirsiniz.
curl -X POST -H "Content-Type: application/json" -d '{"ad":"kaan","soyad":"kuşcu"}' http://localhost:9000
➡️ Diğer Metodlar
Diğer metodlardan kısaca bahsedelim:
PATCH metodu: Bir kaynak üzerindeki belirli bir alanı değiştirmek için kullanılır.
DELETE metodu: Sunucudaki bir kaynağı silmeye yarar.
PUT metodu: Bir kaynağın yerine başka bir kaynağı koymaya yarar. (Komple değiştirme)
HEAD metodu: Sunucuya tıpkı GET metodu gibi fakat sadece başlığı olan bir istek gönderir.
OPTIONS metodu: Sunucunun desteklediği metodları kontrol etmek için kullanılır.
🔘 Adreslendirme
➡️ Parametre ile Adreslendirme
Örneğin:
Yukarıdaki örneğe göre http://localhost:9000/blog/gin%20ile%20sunucu%20geli%C5%9Ftirme adresine gittiğimizde "Şuanda gin ile sunucu geliştirme blogunu okuyorsunuz." yazısı ile karşılacağız.
Tabi ki birden fazla parametre ekleyebilirsiniz.
➡️ Querystring (Sorgu dizesi) ile Adreslendirme
Örneğin:
Yukarıdaki örneğe göre http://localhost:9000/arama?tur=bilim-kurgu&siralama=imdb adresine girdiğimizde "bilim-kurgu türünden filmler imdb olarak sıralanıyor." yazılı bir sonuç elde edeceğiz.
Göz atmanızı önerdiğim yazı:
Last updated