التحقق من صحة البيانات في Go باستخدام go-playground/validator
في التطوير الحديث بلغة Go (Golang)، يُعد التحقق من صحة البيانات الواردة مرحلة حاسمة في معالجة الطلبات أو النماذج أو التكوينات. مكتبة go-playground/validator هي المعيار الفعلي للتحقق من البنى والحقول والكائنات المتداخلة المعقدة. توفر مجموعة قوية من القواعد (الوسوم) للتحقق، وتدعم رسائل الخطأ المخصصة، والتدويل، والتكامل مع أطر العمل الويب.
لماذا نحتاج إلى التحقق من صحة البيانات؟
يؤدي التحقق اليدوي من كل حقل إلى تكرار الكود وحدوث أخطاء. يتيح لك validator وصف القواعد مباشرة في وسوم البنية، مما يجعل الكود نظيفاً وتصريحياً وسهل الصيانة. يمكنك التحقق من الأنواع، والنطاقات، وإلزامية الحقول، والتنسيقات (email, URL, UUID)، وحتى إجراء مقارنات عبر الحقول.
التثبيت
لتثبيت المكتبة، نفّذ الأمر التالي في الطرفية (يتطلب Go 1.18+):
go get github.com/go-playground/validator/v10ثم قم باستيراد الحزمة في الكود الخاص بك:
import "github.com/go-playground/validator/v10"الوظائف الأساسية
- وسوم التحقق:
required،min،max،len،email،url،uuid،oneofوعشرات غيرها. - المدققات المخصصة: إنشاء قواعد خاصة بك من خلال
RegisterValidation. - البنى المتداخلة: التحقق من الحقول داخل الكائنات المتداخلة.
- رسائل الخطأ: ترجمات بلغات مختلفة، وتخصيص النص.
- التحقق الدفعي: التحقق من المصفوفات والشرائح.
مثال كود بلغة Go (Golang)
package main
import ( "fmt" "github.com/go-playground/validator/v10")
// User تمثل بنية مع وسوم التحققtype User struct { Name string `validate:"required,min=2,max=50"` Email string `validate:"required,email"` Age int `validate:"gte=0,lte=130"` Role string `validate:"required,oneof=admin user guest"`}
func main() { validate := validator.New()
user := User{ Name: "A", Email: "invalid-email", Age: 200, Role: "superadmin", }
err := validate.Struct(user) if err != nil { for _, err := range err.(validator.ValidationErrors) { fmt.Printf("الحقل '%s' لم يجتاز التحقق: %s", err.Field(), err.Tag()) } } else { fmt.Println("البيانات صالحة!") }}متى تستخدم go-playground/validator؟
هذه المكتبة مثالية لأي مشروع بلغة Go يتطلب تحققاً موثوقاً من بيانات الإدخال: REST API (مع Gin, Echo, Chi)، ومعالجة النماذج، وملفات التكوين، وتحليل CSV/JSON. وهي مفيدة بشكل خاص في بنية الخدمات المصغرة، حيث يجب على كل خدمة ضمان صحة البيانات عند الإدخال.
إذا كنت بحاجة إلى تحقق سريع ومرن وقابل للتوسع دون كتابة الكثير من العبارات الشرطية — فإن go-playground/validator سيكون خيارك الأفضل.