التحقق من صحة البيانات في Kotlin: المكتبات، الأساليب وأمثلة الكود

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

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

ابدأ الدورة

التحقق من صحة البيانات في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



التحقق من صحة البيانات هو أحد الجوانب الرئيسية لتطوير تطبيقات موثوقة. في Kotlin، بفضل تركيبها المختصر ونظام الأنواع القوي، يمكن أن تكون عملية فحص البيانات فعالة ومعبرة في نفس الوقت. في هذه المقالة، سنستعرض المكتبات الشائعة للتحقق من الصحة، وإمكانياتها، ونقدم أمثلة عملية على الكود.



لماذا نحتاج إلى التحقق من الصحة في Kotlin؟

يتيح التحقق من الصحة:

  • ضمان سلامة البيانات قبل معالجتها؛
  • تحسين تجربة المستخدم من خلال رسائل خطأ واضحة؛
  • تقليل الحمل على قاعدة البيانات ومنطق الخادم؛
  • منع الثغرات الأمنية المرتبطة بالإدخال غير الصحيح.


الأساليب الرئيسية للتحقق من الصحة

في Kotlin، يمكن تمييز ثلاثة أساليب رئيسية:

  1. التعليقات التوضيحية — طريقة تعريفية، تُستخدم غالبًا مع Jakarta Bean Validation (المعروفة سابقًا بـ JSR-380).
  2. التحقق باستخدام DSL — إنشاء أدوات تحقق باستخدام لغة خاصة بالمجال (مثل Konform).
  3. المنهج الوظيفي — استخدام دوال ذات ترتيب أعلى لتكوين قواعد الفحص.


1. مكتبة Konform

Konform هي مكتبة خفيفة للتحقق من صحة البيانات في Kotlin تستخدم DSL. وهي مثالية للتحقق من الكائنات المستلمة من JSON أو النماذج.

مثال على الاستخدام:

import konform.*import konform.dsl.*

data class User( val name: String, val email: String, val age: Int)

fun main() { val userValidator = validation<User> { User::name required { minLength(2) hint "يجب أن يحتوي الاسم على حرفين على الأقل" maxLength(50) hint "يجب ألا يتجاوز الاسم 50 حرفًا" } User::email required { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "بريد إلكتروني غير صحيح" } User::age required { range(18..120) hint "يجب أن يكون العمر بين 18 و 120 عامًا" } }

val user = User("أ", "invalid-email", 17) val result = userValidator.validate(user) if (result is ValidationResult.Invalid) { result.errors.forEach { (field, errors) -> println("الحقل '$field': ${errors.joinToString(", ")}") } } else { println("تم التحقق بنجاح!") }}

الإخراج:

الحقل 'name': يجب أن يحتوي الاسم على حرفين على الأقلالحقل 'email': بريد إلكتروني غير صحيحالحقل 'age': يجب أن يكون العمر بين 18 و 120 عامًا


2. مكتبة Kotlin Validation (KValidation)

KValidation هي أداة شائعة أخرى توفر كلاً من التعليقات التوضيحية و DSL. وهي تتكامل مع Kotlin Serialization وتدعم الكائنات المتداخلة.

مثال مع التعليقات التوضيحية:

import io.kvalidation.annotations.*import io.kvalidation.KValidation

@Validatabledata class Address( @NotEmpty(message = "لا يمكن أن يكون الشارع فارغًا") val street: String, @Range(min = 1, max = 9999, message = "يجب أن يكون رقم المنزل بين 1 و 9999") val houseNumber: Int)

@Validatabledata class Person( @NotEmpty(message = "الاسم مطلوب") @Length(min = 2, max = 100, message = "يجب أن يحتوي الاسم على 2 إلى 100 حرف") val name: String, @Email(message = "بريد إلكتروني غير صحيح") val email: String, @Valid // تحقق متداخل val address: Address)

fun main() { val person = Person("", "test", Address("", 0)) val violations = KValidation.validate(person) violations.forEach { violation -> println("${violatio

توصيات