0Pricing
Go Academy · Ders

İstek Bağlama ve Doğrulama

ShouldBindJSON, bağlama etiketleri ve doğrulayıcı

İstek Bağlama ve Doğrulama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

İstek gövdesini bağlama

Gin, binding yapı etiketi ve c.ShouldBind* işlevlerini kullanarak JSON, XML, form verilerini ve sorgu dizelerini Go yapılarına bağlayabilir:

type CreateUserRequest struct {
    Name  string `json:"name"  binding:"required"`
    Email string `json:"email" binding:"required,email"`
    Age   int    `json:"age"   binding:"gte=0,lte=150"`
}

func createUser(c *gin.Context) {
    var req CreateUserRequest
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(400, gin.H{"error": err.Error()})
        return
    }
}

ShouldBind ve MustBind karşılaştırması

ShouldBind*, hatayı sizin ele almanız için döndürür. Bind* (Must çeşidi), hata durumunda otomatik olarak 400 yanıtı yazar ve işlemi durdurur; özel hata yanıtları için ShouldBind kullanın.

Sorgu bağlama

Sorgu dizesi parametrelerini c.ShouldBindQuery ile bir yapıya bağlayın:

type ListRequest struct {
    Page  int `form:"page"  binding:"gte=1"`
    Limit int `form:"limit" binding:"gte=1,lte=100"`
}
var q ListRequest
c.ShouldBindQuery(&q)

Yol parametresi bağlama

Yol parametrelerini c.ShouldBindUri ile bir yapıya bağlayın:

type IDParam struct {
    ID int64 `uri:"id" binding:"required,gt=0"`
}
var p IDParam
c.ShouldBindUri(&p)

Doğrulama etiketleri

Gin, github.com/go-playground/validator/v10 kullanır. Yaygın etiketler: required, email, min, max, gte, lte, len, oneof.

Özel doğrulayıcılar

binding.Validator.Engine() ile özel bir doğrulama işlevi kaydedin:

validate := binding.Validator.Engine().(*validator.Validate)
validate.RegisterValidation("username", validateUsername)

Doğrulama hatası yanıtı

Doğrulayıcı hatalarını alan adları ve iletiler içeren, kullanıcı dostu bir yanıta dönüştürün:

var ve validator.ValidationErrors
if errors.As(err, &ve) {
    errs := make([]string, len(ve))
    for i, e := range ve {
        errs[i] = fmt.Sprintf("%s: %s", e.Field(), e.Tag())
    }
    c.JSON(400, gin.H{"errors": errs})
}

Multipart form dosyaları

Dosya yüklemelerini c.FormFile ile ele alın:

file, _ := c.FormFile("avatar")
c.SaveUploadedFile(file, "./uploads/"+file.Filename)

Content-Type anlaşması

Gin'in ShouldBind işlevi, bağlama yöntemini Content-Type'a göre otomatik olarak seçer (application/json için JSON, application/x-www-form-urlencoded için form).

En fazla istek gövdesi boyutu

Bellek tükenmesini önlemek için istek gövdesi boyutunu sınırlayın:

r.MaxMultipartMemory = 8 << 20 // 8 MiB for multipart

İç içe yapı doğrulaması

Doğrulama, iç içe yapılarda özyinelemeli olarak çalışır. Dilim öğelerini doğrulamak için dive kullanın:

Tags []string `json:"tags" binding:"required,dive,min=1,max=30"`

Hızlı Kontrol

Gin'de c.ShouldBindJSON ile c.BindJSON arasındaki fark nedir?

Özet: İstek Bağlama

Temel noktalar:

  • Türü belirli bağlama için ShouldBindJSON/ShouldBindQuery/ShouldBindUri
  • go-playground/validator aracılığıyla binding:"required,email,gte=0" etiketleri
  • binding.Validator.Engine() aracılığıyla özel doğrulayıcılar
  • Alan düzeyindeki hata iletileri için ValidationErrors ayrıştırması

Sıkça Sorulan Sorular

“İstek Bağlama ve Doğrulama” dersi ücretsiz mi?

Evet — “İstek Bağlama ve Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“İstek Bağlama ve Doğrulama” dersinde ne öğreneceğim?

ShouldBindJSON, bağlama etiketleri ve doğrulayıcı Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“İstek Bağlama ve Doğrulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gin Yönlendiricisi ve Rota Grupları
  2. İstek Bağlama ve Doğrulama
  3. Yanıt Yardımcıları ve Durum Kodları
  4. Gin Ara Katmanı: Kimlik Doğrulama ve Günlükleme
← Go Academy Sayfasına Dön