Pola opcjonalne
Część sekcji API REST ścieżki Node.js w Coddy. Lekcja 9 z 25.
Kompletne zadanie wymaga tytułu i wartości określającej, czy jest ukończone. Żądanie PATCH może zmienić tylko jedną z tych wartości. Wywołanie .partial() na schemacie obiektu sprawia, że jego pola stają się opcjonalne, a reguły dotyczące podanych pól pozostają bez zmian.
const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});Pominięcie tytułu jest dozwolone, ale podany rok nadal musi być liczbą. Metoda partial nie zmienia nieprawidłowych wartości w prawidłowe. Oryginalny schemat pozostaje bez zmian, więc trasa zastępująca cały zasób może nadal wymagać podania każdego pola.
Book.partial({ pages: true }) sprawia, że opcjonalne staje się tylko pole pages; pozostałe pola są nadal wymagane. W żądaniu utworzenia często pomija się pole z wartością domyślną, jednocześnie wymagając podania głównego tytułu. Po parsowaniu const { pages = 1 } = result.data przypisuje wartość 1, jeśli pominięto to pole.
Wyzwanie
ŁatwyEdytuj dwa przypisania schematów w pliku exercise.js. Pozostaw Task jako kompletny rekord. Spraw, aby ChangeTask akceptował pominięte pola w żądaniu PATCH. Spraw, aby NewTask wymagał tytułu, ale pozwalał pominąć done.
Wyślij żądanie POST z treścią {} na adres /result: oczekiwany wynik to {"change":true,"create":false}. Treść żądania {"title":"Read"} przechodzi obie walidacje. Podane wartości nadal muszą mieć właściwy typ: {"done":"false"} nie przechodzi żadnej z nich.
Początkowe żądanie GET /result używa podanego przykładu {}. Użyj żądania POST /result z treścią w formacie JSON, aby wypróbować inne dane wejściowe.
Spróbuj swoich sił
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 };
}
Wszystkie lekcje w sekcji API REST
1Zasoby i czasowniki
Zasoby i URL-eTworzenie za pomocą POST4Przeglądarki, wersje i konfiguracja
Czym jest originZezwalanie na dostęp z innego originCORSStrona wywołująca APIPoćwicz samodzielnie: Edytor online Express