ボディを記述する
CoddyのNode.jsジャーニー「REST API」セクションの一部。レッスン 7/25。
zodは、あなたが記述した仕様に照らして値をチェックするインストール済みパッケージです。import { z } from 'zod'によって、スキーマを作成するzが利用できるようになります。1つの仕様で、同じフィールドのチェックを何度も手書きする必要がなくなります。
スキーマは、リクエストに含めることが許可される値を記述します。zodでは、z.objectでフィールドを列挙し、それぞれにルールを指定します。z.string()はテキストを受け入れ、z.number()は数値を受け入れます。
const Book = z.object({
title: z.string(),
year: z.number(),
});ここでは両方のフィールドが必須です。exercise.jsの最後の行で、オブジェクトをスキーマに照らしてチェックします。次のレッスンではsafeParseについて説明します。最初のステップでは、フィールド名と型に注目してください。後のステップでは、検証結果全体を使ってAPIが何を返すべきかを判断します。
チャレンジ
簡単これは小規模な練習プロジェクトです。セットアップは用意されています。exercise.jsのみを編集してください。
z.boolean()を使って、titleが文字列、doneが真偽値となるようにTaskスキーマを完成させてください。{"title":"Read","done":false}を指定してPOST /resultにリクエストすると、{"valid":true}が返されます。titleがない場合、またはdoneの値が文字列の場合は、{"valid":false}が返されます。
初期状態のGET /resultでは、用意されている例{"title": "Read", "done": "false"}が使われます。他の入力を試すには、JSON本文を付けてPOST /resultを使ってください。
空の初期スキーマでは、この誤った型が受け入れられます。スキーマを完成させ、初期GETで{"valid":false}が返されるようにしてください。
自分で試してみよう
import { z } from 'zod';
const Task = z.object({});
export function exercise(body) {
return { valid: Task.safeParse(body).success };
}
REST APIのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド