Menu
CoddyTech

検証済みデータを使う

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文字を必須とするため、空白だけのタイトルは失敗します。

challenge icon

チャレンジ

簡単

これは小さな練習用プロジェクトです。セットアップは用意されているので、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プレイグラウンド