Aller au contenu principal

Validation

Nous utilisons VineJS pour la validation de schéma haute performance. Les validateurs sont définis dans app/Validators/.

Définir un Schéma

// app/Validators/camera.ts
import vine from "@vinejs/vine";

export const createCameraValidator = vine.compile(
vine.object({
name: vine.string().trim().minLength(3),
ip: vine.string().ip(),
rtspUsername: vine.string().optional(),
rtspPassword: vine.string().optional(),
}),
);

Utilisation dans le Contrôleur

La validation est stricte. Si elle échoue, la requête s'arrête immédiatement avec une 422 Unprocessable Entity.

import { createCameraValidator } from '#validators/camera'

public async store({ request }: HttpContext) {
// Valide automatiquement le body.
// 'payload' contient UNIQUEMENT les champs validés (pas de junk data).
const payload = await request.validateUsing(createCameraValidator)

await CameraService.create(payload)
}