Champs facultatifs
Fait partie de la section API REST du Journey Node.js de Coddy. Leçon 9 sur 25.
Une tâche complète nécessite un titre et une valeur indiquant si elle est terminée. Une requête PATCH peut ne modifier qu’un seul de ces éléments. Appeler .partial() sur un schéma d’objet rend ses champs facultatifs tout en conservant les règles applicables aux champs présents.
const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});Le titre omis est autorisé, mais une année fournie doit toujours être un nombre. Partial ne transforme pas les valeurs incorrectes en valeurs valides. Le schéma d’origine reste inchangé, de sorte qu’une route qui remplace une ressource complète peut continuer d’exiger tous les champs.
Book.partial({ pages: true }) rend uniquement pages facultatif ; les autres champs restent obligatoires. Une requête de création omet souvent un champ doté d’une valeur par défaut, tout en exigeant le titre principal. Après l’analyse, const { pages = 1 } = result.data fournit 1 lorsque le champ a été omis.
Défi
FacileModifie les deux affectations de schéma dans exercise.js. Garde Task comme enregistrement complet. Fais en sorte que ChangeTask accepte l’omission de champs pour PATCH. Fais en sorte que NewTask exige un titre, mais autorise l’omission de done.
Envoie {} à /result avec POST : le résultat attendu est {"change":true,"create":false}. Un corps contenant {"title":"Read"} réussit les deux validations. Les valeurs fournies doivent toujours être du bon type : {"done":"false"} échoue aux deux validations.
La requête initiale GET /result utilise l’exemple fourni {}. Utilise POST /result avec un corps JSON pour essayer d’autres entrées.
Essayez vous-même
import { z } from 'zod';
const Task = z.object({ title: z.string(), done: z.boolean() });
const ChangeTask = Task;
const NewTask = Task;
export function exercise(body) {
return { change: ChangeTask.safeParse(body).success, create: NewTask.safeParse(body).success };
}
Toutes les leçons de API REST
1Ressources et verbes
Ressources et URLCréer avec POST4Navigateurs, versions et configuration
Qu’est-ce qu’une origineAutoriser une autre origineCORSUne page qui appelle l’API2Validation et erreurs
Valider les entréesEntraînez-vous par vous-même : Playground Express