التحقق من صحة البيانات في Kotlin: المكتبات والمناهج (Kotlin, Java)

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

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

ابدأ الدورة

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



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



1. Konad — التحقق الوظيفي من الصحة



تستخدم Konad (Kotlin Validation) مفهوم المونادات والبرمجة الوظيفية. بدلاً من إلقاء الاستثناءات، تعيد المكتبة Validated<E, A>، حيث E هو نوع الخطأ و A هي القيمة الناجحة. هذا يسمح بتجميع الأخطاء ومعالجتها بدون آثار جانبية.



التثبيت

// build.gradle.ktsdependencies {    implementation("io.github.mkobit:konad:0.3.0")}


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

import konad.*

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

fun validateUser(user: User): Validated<String, User> { return Validated.valid(user) .validate { it.name.isNotBlank() } { "Name cannot be blank" } .validate { it.age in 18..99 } { "Age must be between 18 and 99" }}

fun main() { val user = User("Alice", 25) val result = validateUser(user)

when (result) { is Valid -> println("Valid user: ${result.value}") is Invalid -> println("Errors: ${result.errors.joinToString(", ")}") }}


مزايا Konad:

  • أسلوب وظيفي نقي بدون استثناءات
  • تجميع جميع أخطاء التحقق من الصحة
  • تكوين المدققات


2. Valiktor — التحقق التصريحي من الصحة مع واجهة برمجة تطبيقات سلسة



تقدم Valiktor لغة خاصة بالمجال (DSL) بديهية لوصف القواعد. تدعم المكتبة الكائنات المتداخلة والمجموعات والرسائل المخصصة للأخطاء. هذه واحدة من أكثر الأدوات شيوعًا لـ Kotlin.



التثبيت

// build.gradle.ktsdependencies {    implementation("org.valiktor:valiktor-core:0.12.0")}


مثال مع كائنات متداخلة

import org.valiktor.*import org.valiktor.functions.*

data class Address(val city: String, val zip: String)data class Person(val name: String, val email: String, val address: Address)

fun validatePerson(person: Person) { validate(person) { validate(Person::name).isNotBlank().hasSize(min = 2, max = 50) validate(Person::email).isEmail() validate(Person::address) { validate(Address::city).isNotBlank() validate(Address::zip).matches("\\\\d{5}".toRegex()) } }}

fun main() { val person = Person("", "invalid-email", Address("", "123")) try { validatePerson(person) } catch (e: ConstraintViolationException) { e.constraintViolations.forEach { violation -> println("${violation.property}: ${violation.message}") } }}


ميزات Valiktor:

  • دعم كامل للكائنات المتداخلة والقوائم
  • رسائل خطأ مترجمة
  • التكامل مع Spring Boot و Ktor


3. Kvalidation — التحقق المعياري من الصحة بناءً على التعليقات التوضيحية



توفر Kvalidation (المعروفة سابقًا باسم Koptional) نهجًا قائمًا على التعليقات التوضيحية وآخر برمجيًا. المكتبة مفيدة بشكل خاص للتحقق من بيانات الإدخال في REST API.



التثبيت

// build.gradle.ktsdependencies {    implementation("com.willowtreeapps:kvalidation:1.0.0")}


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

import com.willowtreeapps.kvalidation.annotations.*import com.willowtreeapps.kvalidation.Validator

data class Product( @field:NotBlank(message = "Pro

توصيات