Gin Framework ile RESTful API'ler Yapın

Yayınlanan: 2022-09-02

Gin çerçevesinin yardımıyla bir REST API oluşturmak için sabırsızlanıyor musunuz? O zaman, bu blogu kapsamlı bir şekilde okumalısınız. Basit adımlarla, diğer karmaşık projeleri üstlenebileceğiniz temel bir API oluşturmayı öğreneceksiniz. Ve evet, Golang geliştirme hizmetlerinden faydalanmadan işleri kendi başınıza halledebilirsiniz . Ancak, başlamadan önce, Gin çerçevesinin teorik yönü hakkında bilgi sahibi olun.

  1. Yapılması Gereken İlk Görev
  • Önce go-work alanınızda bir dizin oluşturmanız gerekir. Windows bilgisayar kullanıyorsanız Komut İstemi'ni kullanacaksınız. İşletim sisteminiz olarak macOS veya Linux kullanıyorsanız Terminal'i kullanın.
  • Bu senaryoda Komut İstemi'ni kullanacağım.

cd çalışma alanı

mkdir işi

cd işi

kod .

Code yazdıkça, VS Code'un başladığını görüyoruz. Sizin durumunuzda, farklı bir IDE veya düzenleyici olabilir.

  1. VS Koduna Başlayın
  • Yapacağımız ilk şey bir main.go dosyası oluşturmak. Bunu takiben, REST API'lerini oluşturmak için gin çerçevesini indirmemiz gerekiyor.
  • Şimdi bir go.mod dosyası oluşturmamız gerekiyor. Yazıyoruz:

mod init golang.com/job'a gidin

  • go.mod dosyasının oluşturulmasının ardından şunu yazacağız:

github.com/gin-gonic/gin'i al

Bu, go.sum dosyasının oluşturulmasına ve ayrıca gin çerçevesi ile ilgili tüm gerekli paketlerin indirilmesine neden olacaktır.

  1. Basit Bir API ile Başlayalım
  • Sadece kodu yazıyoruz

paket ana

içe aktarmak (

"fmt"

"net/http"

“github.com/gin-gonic/gin”

)

ana işlev()

{s :=gin.Default()

s.GET (“”, func (c *gin.Context){

c.String(http.StatusOK, “İş rolü nedir?”)

})

s.Run (“yerel ana bilgisayar: 8000”)

}

  • Gördüğünüz gibi, uygulamanın gerektirdiği her paketi içe aktardık. Daha sonra doğrudan ana fonksiyona geçiyoruz. Yaptığımız şey, Gin için bir kurtarma veya kaydedici ara katman yazılımı varsayılan modülü oluşturmaktır.
  • Varsayılan ayarlar "s" değişkenine dahil edilmiştir. Ve bu değişkeni GET API geliştirmeye yardımcı olması için kullanacağız. Bu örnekte verdiğim ilk argüman API'nin URL'sidir.
  • w.Run(“localhost:8000”) tarafından belirtilen temel URL, API'yi localhost:8000'de barındırmak için kullanılacaktır. Ayrıca, ilk argüman aslında API'nin göreli yolunu gösterir.
  • İşleyici işlevi func (c *gin.Context), verebileceğiniz işlev sırasını ifade eder.
  • *gin.Context değişkeninin işaretçisi, işlevin argümanı olarak işlev görür. Bu nedenle, bu örnekteki “c” bağlam anlamına gelir.
  • Bağlam, c.String veya c.JSON olan bir değer döndürmelidir. Burada, operasyonda iki kriter vardır. Durum, basit bir tamsayı olan ilk argümanla belirtilir (http.StatusOK). Net/http paketini import ettiğimiz için bunu kullanabiliriz.
  • Bundan sonra sadece örnek bir dize gönderiyorum. “İş rolü nedir?”
  1. Yukarıdaki Programı Çalıştıralım

Programı çalıştırmak için go run main.go yazmamız gerekiyor.

  • Gördüğünüz gibi, boş bir URL'de bir GET isteğinin varlığı var. Ayrıca özelleştirilebilir bir işlevle birlikte gelir. Ayrıca motorun serbest bırakma modu çalışması da görülebilir. localhost 8000'de tek bir aktif uç nokta vardır.
  • Bir web tarayıcısında, görmek için localhost:8000 yazabiliriz:
  • Bu arada, VS Kodunda aşağıdaki anlık görüntüyü göreceksiniz

Ne anlama geliyor? Pekala, cin çerçevesi, yürütülen kodun yanıt süresinin izlenmesinde burada büyük bir rol oynuyor.

  1. Parametre Geçişinin URL Tarafından İşlendiği GET API'sine odaklanma

Aşağıdaki kod, API'nin size URL'ye yanıt olarak bir değer, ideal olarak bir dize sağlayacağını varsayar.

s.GET(“/:get”, func (c *gin.Context){

var val = c.Param(“getr”)

c.JSON(http.StatusOK, gin.H{

"yanıt verisi":val,

})

})

// 2. bölüm

  • Her değişken adını iki nokta üst üste ile ayırarak GET isteğine sağlayabiliriz. Temel URL'den sonra girilen her şey bu nedenle "al" olarak kabul edilecektir.
  • Get'in değerini belirlemek için Param bağlamını ve bahsettiğimiz değişkenin adını tanımlamamız gerekir. Val, Gin'den 'get' alacak ve sonuçtan haberdar edilecek.
  • Ardından, değeri içeren bir JSON aktardığımı görüyoruz.

Karmaşık bir şey üzerinde mi çalışıyorsun? O zaman, bir sorunla karşılaşırsanız ve çözemezseniz, Golang geliştirme hizmetlerinden yararlanmak en iyi fikir olacaktır.

  1. Yukarıdaki Programı Çalıştıralım
  • Yine go run main.go yazarak programı çalıştırmamız gerekecek.

'tcp 127.0.0.1: 8000: bağlama: Normalde her soket adresinin (protokol/ağ adresi/port) yalnızca bir kullanımına izin verilir.' mesajını görürseniz, Komut İstemi'nde bir işlem yapmanız gerekir.

yuva -ano | bulucu :8000

DİNLEME değerini kontrol edin (örneğin 7932), ardından yazmanız gerekir.

görev sonu / pid 7932 /F

Bu, pid işleminin sona ermesine yol açacaktır.

  • Tarayıcıda aşağıdakileri gerçekleştiririz:

localhost:8000 belirttikten sonra bir dize girmemizin nedeni, API'nin URL'den bir dize beklemesidir.

  1. POST API'sini denemek
  • Burada bir POST API'sine bağlanmayı deneyeceğiz. Ayrıca, verilerin vücutta bulunacağının farkındayız. Bu, yapının kullanışlı olacağı zamandır.
  • Bu bölümü hatırlıyor musunuz?

paket ana

içe aktarmak (

"fmt"

"net/http"

“github.com/gin-gonic/gin”

)

  • Bunu takiben, görebileceğiniz gibi iki veri alanına sahip bir yapı oluşturacağız:

type İş yapısı {

Maaş int `json:”maaş” bağlama: “gerekli”`

Ad dizesi `json:”name” bağlama: “gerekli”`

}

  • json:”salary” ve json:”name” farklı anahtarları temsil eder. Ayrıca bağlamanın “zorunlu” olarak belirtildiğini de görebilirsiniz.
  • //bölümün ardından şunu yazacağız:

s.POST(“/highlight”, func (c *gin.Context){

var data İş

if err := c.ShouldBind(&veri); hata != nil{

fmt.Println (hata)

c.JSON(http.StatusBadRequest, gin.H{

“hata”: fmt.Sprintf(“%v”, hata),

})

} başka{

c.JSON(http.StatusOK, gin.H{

“veri”: veri,

})

}

})

  • Bu kod bloğuna bakalım. s.POST'ta, İş için nesneyi oluşturacağız. Bundan sonra “c” bağlamı veri modeline eklenmelidir. c.ShouldBind(&data) bir hata verirse, API'yi sorun hakkında uyaracaktır.
  • c.JSON(http.StatusBadRequest) içindeki “error”:fmt.Sprintf(“%v”, err) içinde gözlemlenen hatayı gösteren kötü bir istekte bulundum.
  • Herhangi bir sorun yoksa, verileri API yanıtına geri iletmek için “veri” anahtarı kullanılacaktır.
  1. Son Kod Bloğu'nu Çalıştıralım
  • Şimdi programın son aşamasını inceleyelim. Bunun için go run main.go yazmalıyız. Ek olarak, API'nin nasıl çalıştığını ve kodun nasıl çalıştığını göstermek için Postman'ı kullanacağım. Masaüstü sürümünün yüklenmesi yeterlidir.
  • Aşağıdaki ekran görüntüsüne bakarsanız, gövdede iki veri alanım olduğunu görebilirsiniz. Raw ve JSON, Body için seçenekler olmalıdır.
  • 'Gönder'e tıkladığımızda aşağıdaki sonucu göreceğiz:

{

"veri": {

“maaş”: 23000,

“isim”: “Robert Hall”

}

}

Programı anlayabildiniz mi? Evet? Sonra, harika. Son durumda, URL'de hiçbir şey belirtilmeyen, bir dize bekleyen ve ardından gövdede değerler bekleyen sonuncusu olmak üzere üç API'nin çalıştığını görüyoruz. Umarım, şimdi bazı zorlu REST API görevlerinin üstesinden gelebilirsiniz.