検証済みデータを使う
CoddyのNode.jsジャーニー「REST API」セクションの一部。レッスン 8/25。
スキーマは、検証済みデータまたは問題に関する情報のいずれかを返します。safeParseは、どちらが起きたかを示すsuccessフィールドを持つオブジェクトを返します。成功した場合、dataには検証済みの値が格納されます。
const result = Book.safeParse(body);
if (result.success) {
return result.data;
}
return {error: 'Invalid book'};ルールは値を拒否するだけでなく、変換することもできます。z.string().trim()は前後の空白を削除します。その変更を保持するには、検証済みデータを保存してください。元のbodyを保存すると、不要な空白が戻ってしまいます。指定されたスキーマには、すでにルールが設定されています。
trim()は前後の空白を削除します。続くmin(1)は少なくとも1文字を必須とするため、空白だけのタイトルは失敗します。
チャレンジ
簡単これは小さな練習用プロジェクトです。セットアップは用意されているので、exercise.jsだけを編集してください。
用意されているTaskスキーマを使ってください。成功した場合はトリミング済みのタイトルを含む{"ok":true,"title":...}を、失敗した場合は{"ok":false}を返してください。POST {"title":" Read "}を/resultに送信すると、{"ok":true,"title":"Read"}が返ります。タイトルに42を指定すると、{"ok":false}が返ります。
{"title":" "}も試してください。{"ok":false}を返す必要があります。
最初のGET /resultでは、用意されている例{"title": " Read "}が使われます。他の入力を試すには、JSON本文を付けてPOST /resultを使ってください。
自分で試してみよう
import { z } from 'zod';
const Task = z.object({ title: z.string().trim().min(1) });
export function exercise(body) {
return { ok: true, title: body.title };
}
REST APIのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド