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() } { "नाम खाली नहीं हो सकता" } .validate { it.age in 18..99 } { "आयु 18 और 99 के बीच होनी चाहिए" }}
fun main() { val user = User("Alice", 25) val result = validateUser(user)
when (result) { is Valid -> println("मान्य उपयोगकर्ता: ${result.value}") is Invalid -> println("त्रुटियाँ: ${result.errors.joinToString(", ")}") }}Konad के लाभ:
- अपवादों के बिना शुद्ध कार्यात्मक शैली
- सभी सत्यापन त्रुटियों का संचय
- सत्यापनकर्ताओं की संरचना
2. Valiktor — fluent API के साथ घोषणात्मक सत्यापन
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