使用已验证的数据
本课属于 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}。向 /result 发送 POST 请求,数据为 {"title":" Read "},会得到 {"ok":true,"title":"Read"}。标题为 42 时,会得到 {"ok":false}。
还可以试试 {"title":" "}:它必须返回 {"ok":false}。
初始的 GET /result 使用提供的示例 {"title": " Read "}。使用 POST /result 并提供 JSON 请求体来尝试其他输入。
亲手试试
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 在线编辑器