Règles Communes
Ces décorateurs sont universels et peuvent être combinés avec n'importe quel type de donnée (String, Number, Object, etc.).
Champs Obligatoires (@IsRequired)
Par défaut, toutes les propriétés sont optionnelles dans le schéma généré. Pour rendre un champ obligatoire, utilisez @IsRequired.
Cela ajoutera la clé à la liste required du JSON Schema.
import { IsString, IsRequired, generateSchema } from 'my-class-validator';
export class LoginDto {
@IsString()
@IsRequired({ message: "L'identifiant est requis." })
username: string;
@IsString()
@IsRequired()
password: string;
}
export const LoginSchema = generateSchema(LoginDto);
Valeurs Nulles (@IsNullable)
Permet à une propriété d'accepter la valeur null en plus de son type de base.
Dans le schéma, le type deviendra un tableau : type: ['string', 'null'].
import { IsString, IsNullable } from 'my-class-validator';
export class UpdateProfileDto {
@IsString()
@IsNullable()
bio: string | null; // Peut être une chaîne ou null
}
Propriétés Supplémentaires (@AdditionalProperties)
Ce décorateur s'applique sur la classe elle-même. Il contrôle si le client a le droit d'envoyer des champs qui ne sont pas définis dans le DTO.
true(défaut) : Les champs inconnus sont acceptés (et ignorés ou passés selon la config Fastify).false: Le validateur renverra une erreur si un champ inconnu est présent.
import { AdditionalProperties, IsString, generateSchema } from 'my-class-validator';
@AdditionalProperties(false, { message: "Champs interdits détectés dans la requête." })
export class StrictDto {
@IsString()
name: string;
}
export const StrictSchema = generateSchema(StrictDto);