Aller au contenu principal

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);