go-playground/validator | التحقق من البيانات في Go

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التحقق من صحة البيانات في 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 سيكون خيارك الأفضل.

توصيات