irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Neden Framework?
Standart kütüphane (net/http) harikadır ama büyük projelerde "Routing" (Yönlendirme), parametre okuma ve Middleware yönetimi zorlaşır. Gin Gonic, Go dünyasının en popüler, en hızlı (martini'den 40 kat hızlı) ve en hafif web çatısıdır.Kurulum
go get -u github.com/gin-gonic/ginİlk Gin API: Ping-Pong
Gin'in en sevilen yanı c *gin.Context yapısıdır. İstekle ilgili her şey (JSON, Parametre, Header) bu c değişkenindedir.
Kod:
package main
import "github.com/gin-gonic/gin"
// Veri Modelitype Urun struct {Ad string json:"ad"Fiyat float64 json:"fiyat"}
func main() {// Varsayılan router (Loglama ve Recovery ile gelir)r := gin.Default()
// 1. GET İsteği<br>r.GET("/ping", func(c *gin.Context) {<br> c.JSON(200, gin.H{<br> "mesaj": "pong",<br> })<br>})<br><br>// 2. POST İsteği ve JSON Okuma<br>r.POST("/urun", func(c *gin.Context) {<br> var yeniUrun Urun<br> <br> // Gelen JSON'ı struct'a dönüştür (Bind)<br> if err := c.ShouldBindJSON(&yeniUrun); err != nil {<br> c.JSON(400, gin.H{"hata": err.Error()})<br> return<br> }<br><br> // İşlem başarılı<br> c.JSON(201, gin.H{<br> "durum": "kaydedildi",<br> "urun": yeniUrun,<br> })<br>})<br><br>// 3. URL Parametresi Okuma (/user/ahmet)<br>r.GET("/user/:name", func(c *gin.Context) {<br> isim := c.Param("name")<br> c.String(200, "Merhaba %s", isim)<br>})<br><br>r.Run(":8080") // localhost:8080<br>
}