Menu
CoddyTech

선택적 필드

Coddy Node.js 여정의 REST API 섹션에 포함된 레슨. 25개 중 9번째.

완전한 작업에는 제목과 완료 값이 필요합니다. PATCH 요청은 둘 중 하나만 변경할 수 있습니다. 객체 스키마에 .partial()을 호출하면 값이 제공된 필드의 규칙은 유지하면서 필드를 선택 사항으로 만듭니다.

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

생략한 제목은 허용되지만, 제공된 연도는 여전히 숫자여야 합니다. partial은 올바르지 않은 값을 유효한 값으로 바꾸지 않습니다. 원래 스키마는 변경되지 않으므로, 완전한 리소스를 대체하는 경로에서는 계속 모든 필드를 요구할 수 있습니다.

Book.partial({ pages: true })는 pages만 선택 사항으로 만들고, 다른 필드는 필수로 유지합니다. 생성 요청에서는 주요 제목은 계속 요구하면서 기본값이 있는 필드를 생략하는 경우가 많습니다. 파싱 후 const { pages = 1 } = result.data는 해당 필드가 생략되었을 때 1을 제공합니다.

challenge icon

챌린지

쉬움

exercise.js에서 두 스키마 할당을 수정하세요. Task는 완전한 레코드로 유지하세요. PATCH에서 필드를 생략해도 ChangeTask가 허용하도록 하세요. NewTask는 제목을 필수로 요구하되 done은 생략할 수 있게 하세요.

/result에 {}를 POST하세요. {"change":true,"create":false}가 반환될 것으로 예상하세요. {"title":"Read"} 본문은 두 검사를 모두 통과합니다. 전달한 값도 여전히 올바른 유형이어야 합니다. {"done":"false"}는 두 검사 모두 실패합니다.

처음 GET /result 요청에는 제공된 예시 {}가 사용됩니다. 다른 입력을 시도하려면 JSON 본문과 함께 POST /result를 사용하세요.

직접 해보기

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

REST API의 모든 레슨

직접 연습해 보세요: Express 플레이그라운드