İ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
- Gin Yönlendiricisi ve Rota Grupları
- İstek Bağlama ve Doğrulama
- Yanıt Yardımcıları ve Durum Kodları
- Gin Ara Katmanı: Kimlik Doğrulama ve Günlükleme