Field opsional
Termasuk bagian REST API dalam perjalanan Node.js di Coddy. Pelajaran 9 dari 25.
Tugas yang lengkap memerlukan judul dan nilai done. Permintaan PATCH hanya dapat mengubah salah satunya. Memanggil .partial() pada skema object membuat field-nya opsional, tetapi aturan untuk field yang disertakan tetap berlaku.
const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});Judul yang tidak disertakan diperbolehkan, tetapi year yang diberikan tetap harus berupa number. Partial tidak mengubah nilai yang salah menjadi valid. Skema aslinya tetap tidak berubah, sehingga route yang mengganti resource lengkap dapat terus mewajibkan setiap field.
Book.partial({ pages: true }) hanya membuat pages opsional; field lainnya tetap wajib. Permintaan pembuatan sering kali tidak menyertakan field yang memiliki nilai bawaan, tetapi tetap mewajibkan judul utama. Setelah parsing, const { pages = 1 } = result.data memberikan nilai 1 saat field tersebut tidak disertakan.
Tantangan
MudahEdit dua assignment skema di exercise.js. Pertahankan Task sebagai record lengkap. Buat ChangeTask menerima field yang tidak disertakan untuk PATCH. Buat NewTask mewajibkan title, tetapi mengizinkan done tidak disertakan.
Kirim POST dengan {} ke /result: hasil yang diharapkan adalah {"change":true,"create":false}. Body {"title":"Read"} lolos keduanya. Nilai yang diberikan tetap harus memiliki tipe yang tepat: {"done":"false"} gagal pada keduanya.
GET /result awal menggunakan contoh yang diberikan, yaitu {}. Gunakan POST /result dengan body JSON untuk mencoba input lain.
Coba sendiri
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 };
}
Semua pelajaran di REST API
1Sumber Daya dan Kata Kerja
Sumber Daya dan URLMembuat dengan POST4Peramban, Versi, dan Konfigurasi
Apa Itu OriginMengizinkan Origin LainCORSHalaman yang Memanggil API2Validasi dan error
Memvalidasi inputLatihan sendiri: Playground Express