Validation des données en Kotlin : aperçu des bibliothèques et exemples pratiques
La validation des données est l'un des aspects clés du développement d'applications fiables. En Kotlin, grâce à sa syntaxe concise et à son système de types puissant, le processus de vérification des données peut être non seulement efficace, mais aussi expressif. Dans cet article, nous examinerons les bibliothèques populaires pour la validation, leurs fonctionnalités et fournirons des exemples pratiques de code.
Pourquoi la validation en Kotlin est-elle nécessaire ?
La validation permet :
- D'assurer l'intégrité des données avant leur traitement ;
- D'améliorer l'expérience utilisateur grâce à des messages d'erreur clairs ;
- De réduire la charge sur la base de données et la logique serveur ;
- De prévenir les vulnérabilités liées à des entrées incorrectes.
Principales approches de validation
En Kotlin, on peut distinguer trois approches principales :
- Annotations — méthode déclarative, souvent utilisée avec Jakarta Bean Validation (anciennement JSR-380).
- Validation DSL — création de validateurs à l'aide d'un langage dédié (par exemple, Konform).
- Approche fonctionnelle — utilisation de fonctions d'ordre supérieur pour composer des règles de validation.
1. Bibliothèque Konform
Konform est une bibliothèque légère pour la validation des données en Kotlin qui utilise le DSL. Elle est idéale pour valider des objets provenant de JSON ou de formulaires.
Exemple d'utilisation :
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 "Le nom doit contenir au moins 2 caractères" maxLength(50) hint "Le nom ne doit pas dépasser 50 caractères" } User::email required { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "Email invalide" } User::age required { range(18..120) hint "L'âge doit être compris entre 18 et 120 ans" } }
val user = User("A", "email-invalide", 17) val result = userValidator.validate(user) if (result is ValidationResult.Invalid) { result.errors.forEach { (field, errors) -> println("Champ '$field': ${errors.joinToString(", ")}") } } else { println("Validation réussie !") }}Sortie :
Champ 'name': Le nom doit contenir au moins 2 caractèresChamp 'email': Email invalideChamp 'age': L'âge doit être compris entre 18 et 120 ans2. Bibliothèque Kotlin Validation (KValidation)
KValidation est un autre outil populaire, offrant à la fois des annotations et un DSL. Il s'intègre avec Kotlin Serialization et prend en charge les objets imbriqués.
Exemple avec annotations :
import io.kvalidation.annotations.*import io.kvalidation.KValidation
@Validatabledata class Address( @NotEmpty(message = "La rue ne peut pas être vide") val street: String, @Range(min = 1, max = 9999, message = "Le numéro de maison doit être compris entre 1 et 9999") val houseNumber: Int)
@Validatabledata class Person( @NotEmpty(message = "Le nom est obligatoire") @Length(min = 2, max = 100, message = "Le nom doit contenir entre 2 et 100 caractères") val name: String, @Email(message = "Email invalide") val email: String, @Valid // validation imbriquée val address: Address)
fun main() { val person = Person("", "test", Address("", 0)) val violations = KValidation.validate(person) violations.forEach { violation -> println("${violatio Aussi dans la bibliothèque
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et outils
Travailler avec Excel en Java : Apache POI et alternatives
Travailler avec Markdown en Go (Golang) : bibliothèques, analyse et conversion
Client Elasticsearch pour Java : guide complet d'utilisation du Java Client