Menu
CoddyTech

Campi facoltativi

Fa parte della sezione API REST del percorso Node.js di Coddy. Lezione 9 di 25.

Un'attività completa richiede un titolo e un valore done. Una richiesta PATCH può modificarne solo uno. Chiamare .partial() su uno schema di oggetto rende facoltativi i suoi campi, mantenendo le regole per tutti i campi presenti.

const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});

Il titolo omesso è consentito, ma l'anno fornito deve comunque essere un numero. Partial non trasforma i valori non validi in valori validi. Lo schema originale resta invariato, quindi una route che sostituisce una risorsa completa può continuare a richiedere tutti i campi.

Book.partial({ pages: true }) rende facoltativo solo pages; gli altri campi restano obbligatori. Spesso una richiesta di creazione omette un campo con un valore predefinito, pur richiedendo il titolo principale. Dopo l'analisi, const { pages = 1 } = result.data fornisce 1 se il campo è stato omesso.

challenge icon

Sfida

Facile

Modifica le due assegnazioni degli schemi in exercise.js. Mantieni Task come record completo. Fai in modo che ChangeTask accetti campi omessi per PATCH. Fai in modo che NewTask richieda un titolo ma consenta di omettere done.

Invia {} con POST a /result: il risultato atteso è {"change":true,"create":false}. Un corpo {"title":"Read"} supera entrambe le verifiche. I valori forniti devono comunque avere il tipo corretto: {"done":"false"} non supera nessuna delle due verifiche.

La richiesta iniziale GET /result usa l'esempio fornito {}. Usa POST /result con un corpo JSON per provare altri input.

Provalo tu

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

Tutte le lezioni di API REST

Esercitati da solo: Playground Express