0Pricing
Go Academy · درس

مكتبات التحقّق

تحقّق من صحة البُنى باستخدام العلامات

مكتبات التحقّق درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

لماذا نتحقق من البنى

قبل استخدام البيانات الواردة من نموذج أو واجهة API، يتعين عليكم غالبًا التحقق منها: الحقول المطلوبة، وصحة البريد الإلكتروني، ونطاقات القيم. تعمل مكتبات التحقق على أتمتة ذلك باستخدام وسوم البنية.

وسم validate

تقرأ المكتبات الشائعة مثل go-playground/validator وسم validate الذي يصف القواعد الخاصة بكل حقل.

قد يحمل أحد الحقول validate:"required,email".

اعتمادية خارجية

مكتبات التحقق هي حزم تابعة لجهات خارجية وليست جزءًا من المكتبة القياسية. تضيفونها باستخدام go get github.com/go-playground/validator/v10. ولا يمكنها العمل في مقتطف مستقل هنا.

تعريف القواعد

يسرد وسم validate الخاص بكل حقل القواعد مفصولة بفواصل. ومن القواعد الشائعة: required وemail وmin وmax وlen.

بنية نموذجية

بنية نموذجية يجري التحقق منها. (مثال توضيحي؛ تحتاج إلى حزمة validator لتعمل.)

type SignupForm struct {
	Email    string "validate:\"required,email\""
	Password string "validate:\"required,min=8\""
	Age      int    "validate:\"gte=18,lte=120\""
}

تشغيل التحقق

تنشئون مثيلًا من أداة التحقق وتستدعون Validate.Struct(form). وتُرجع خطأً إذا فشلت أي قاعدة، أو تُرجع nil إذا اجتازت جميع القواعد.

import "github.com/go-playground/validator/v10"

var validate = validator.New()

func check(f SignupForm) error {
	return validate.Struct(f)
}

قراءة الأخطاء

عند الفشل، يمكن تحويل الخطأ المُرجع إلى validator.ValidationErrors، وهي شريحة تصف كل قاعدة لم تُستوفَ: الحقل والقيد اللذان فشلا.

قواعد مضمّنة شائعة

تشمل القواعد المفيدة ما يلي:

  • required - يجب ألا تكون القيمة الصفرية
  • email - تنسيق بريد إلكتروني صالح
  • min / max - حدود الطول أو القيمة العددية
  • gte / lte - مقارنات عددية
  • oneof - يجب أن تكون القيمة واحدة من قائمة

التحقق من البنى المتداخلة

تتعمق أدوات التحقق تلقائيًا داخل البنى المتداخلة. فإذا كان أحد الحقول بنية بحد ذاته، تُفحَص قواعده الخاصة أيضًا، وبذلك يجري التحقق من مخطط الكائنات كاملًا باستدعاء واحد.

لماذا نستخدم مكتبة

تُعد كتابة التحقق يدويًا لكل حقل عملًا مملًا وعرضة للأخطاء. ويحافظ التحقق المعتمد على الوسوم على كون القواعد تعريفية، وبجوار الحقول، ومتسقة في أنحاء التطبيق.

البديل اليدوي

في الحالات البسيطة، يمكنكم إجراء التحقق يدويًا من دون مكتبة؛ أما مع كثرة الحقول وتعقيد القواعد، فتكون المكتبة خيارًا أفضل. ويعمل هذا في أي مكان لأنه يستخدم المكتبة القياسية فقط.

package main

import (
	"errors"
	"fmt"
	"strings"
)

func validateEmail(e string) error {
	if !strings.Contains(e, "@") {
		return errors.New("invalid email")
	}
	return nil
}

func main() {
	fmt.Println(validateEmail("bad"))
	fmt.Println(validateEmail("a@b.com"))
}

تحقق سريع

كيف تعرف مكتبة تحقق مثل go-playground/validator القواعد التي يجب تطبيقها على كل حقل؟

مراجعة

مكتبات التحقق:

  • تقرأ وسم validate لتطبيق القواعد
  • تابعة لجهات خارجية، مثل go-playground/validator، وتُضاف باستخدام go get
  • تُرجع أخطاء تسرد كل قاعدة فاشلة
  • يمكن إجراء التحقق يدويًا في الحالات البسيطة

الأسئلة الشائعة

هل درس «مكتبات التحقّق» مجاني؟

نعم — نص درس «مكتبات التحقّق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «مكتبات التحقّق»؟

تحقّق من صحة البُنى باستخدام العلامات تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «مكتبات التحقّق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما علامات Struct؟
  2. علامات JSON
  3. مكتبات التحقّق
  4. تحليل العلامات المخصّصة
← العودة إلى Go Academy