Sfeir / bouffe-front

Bouffe Front SFEIR
12 stars 2 forks source link

Validation d’objets en JavaScript #17

Closed xavierdutreilh closed 7 years ago

xavierdutreilh commented 7 years ago

Validation d’objets en JavaScript

La validation d’objets est une technique très répandue dans d’autres écosystèmes, et on l’utilise généralement pour valider à peu près tout, notamment les saisies utilisateur via les fonctionnalités offertes par notre ORM préféré. Seulement, dans l’écosystème JavaScript, on est un peu plus livré à soi-même, peu importe que notre application soit prévue pour un contexte Node.js ou un contexte navigateur.

Côté Node.js, on a, par exemple, des tonnes de solutions simulant ces fonctionnalités mais elles sont toutes spécifiques à un environnement donné : Sequelize pour les SGBDR, Mongoose pour MongoDB, etc, et on ne peut pas réutiliser une même technologie de validation pour d’autres environnements. Et si vous avez le malheur de vouloir changer de base de données, vous allez devoir réécrire toutes vos règles de validation métier alors que celles-ci n’ont pas changé. Par ailleurs, si vous devez valider des données telles que des retours d’API tierces, ou des fichiers JSON, vous devez généralement bricoler votre propre solution.

Côté navigateur, c’est encore plus n’importe quoi et on trouve de tout. Ce qui fait que bien souvent on bricole et improvise des solutions un peu bancales pour faire des validations un peu custom et complexes non supportées par l’API HTML5 Form. Ou alors, on utilise la technique imposée par notre framework web, au risque de devoir tout jeter le jour où on change de framework web.

Par ailleurs, que se passe-t-il si on développe un front-end et un back-end en JavaScript en parallèle ? Doit-on forcément écrire toute ou partie des règles de validation pour les deux contextes d’exécution ? Ne peut-on pas tout simplement réinjecter certaines des règles définies pour un contexte Node.js dans un contexte navigateur ? Si oui, à quel coût ?

TL;DR

L’objectif de cette présentation est d’introduire les systèmes de validation d’objets en JavaScript (avec un gros focus sur JOI), leur intérêt, leur coût d’intégration, et comment on peut les mettre en oeuvre à la fois dans des contextes Node.js et navigateur.

xavierdutreilh commented 7 years ago

cc @SiegfriedEhret

ThomasCrevoisier commented 7 years ago

@florianorpeliere On peut clore cet issue vu que la prez a été faite en Novembre ? :)

florianorpeliere commented 7 years ago

@ThomasCrevoisier Yes merci !