Optionale Felder
Teil des Abschnitts REST-APIs der Node.js-Journey von Coddy. Lektion 9 von 25.
Eine vollständige Aufgabe benötigt einen Titel und einen Wert für den Erledigt-Status. Eine PATCH-Anfrage kann nur einen davon ändern. Wird .partial() auf ein Objektschema angewendet, werden dessen Felder optional, während die Regeln für alle vorhandenen Felder erhalten bleiben.
const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});Der ausgelassene Titel ist zulässig, aber ein angegebener Jahreswert muss weiterhin eine Zahl sein. Partial macht falsche Werte nicht gültig. Das ursprüngliche Schema bleibt unverändert, sodass eine Route, die eine vollständige Ressource ersetzt, weiterhin jedes Feld verlangen kann.
Book.partial({ pages: true }) macht nur pages optional; andere Felder bleiben erforderlich. Bei einer Erstellungsanfrage wird ein Feld mit einem Standardwert oft ausgelassen, während der Haupttitel weiterhin erforderlich ist. Nach dem Parsen liefert const { pages = 1 } = result.data den Wert 1, wenn das Feld ausgelassen wurde.
Aufgabe
EinfachBearbeite die beiden Schema-Zuweisungen in exercise.js. Behalte Task als vollständigen Datensatz bei. Sorge dafür, dass ChangeTask für PATCH ausgelassene Felder akzeptiert. Sorge dafür, dass NewTask einen Titel erfordert, aber erlaubt, dass done ausgelassen wird.
Sende per POST {} an /result: Erwarte {"change":true,"create":false}. Ein Body mit {"title":"Read"} besteht beide Prüfungen. Angegebene Werte müssen weiterhin den richtigen Typ haben: {"done":"false"} besteht keine der beiden Prüfungen.
Die anfängliche GET /result-Anfrage verwendet das bereitgestellte Beispiel {}. Verwende POST /result mit einem JSON-Body, um andere Eingaben auszuprobieren.
Probier es selbst
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 };
}
Alle Lektionen in REST-APIs
1Ressourcen und Verben
Ressourcen und URLsErstellen mit POST4Browser, Versionen und Konfiguration
Was ist ein Origin?Einen anderen Origin zulassenCORSEine Seite, die die API aufruft2Validierung und Fehler
Eingaben validierenÜbe selbstständig: Express-Playground