Menu
CoddyTech

描述请求体

本课属于 Coddy Node.js 学习旅程的“REST API”单元。第 7 课,共 25 课。

zod 是一个已安装的包,可以根据你编写的描述检查值。import { z } from 'zod' 会提供它的模式构建器 z。一份描述就能替代重复手写的字段检查。

模式用于描述请求中允许包含哪些值。使用 zod 时,z.object 会列出字段,并为每个字段指定规则。z.string() 接受文本;z.number() 接受数字。

const Book = z.object({
    title: z.string(),
    year: z.number(),
});

这里两个字段都是必填的。exercise.js 中的最后一行会根据你的模式检查这个对象;下一课会讲解 safeParse。在第一步中,先关注字段名称和类型。后续步骤会使用完整的验证结果来决定 API 应该返回什么。

challenge icon

挑战

简单

这是一个小型练习项目。项目已提供初始设置,只编辑 exercise.js。

在 Task 模式中填写一个字符串类型的 title 和一个布尔类型的 done,并使用 z.boolean()。向 POST /result 发送 {"title":"Read","done":false},会返回 {"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 在线编辑器