Fastify 中如何使用 JSON Schema 校验请求参数?

· 约 3 分钟读完 · 第 16 / 127 章

推荐答案

在 Fastify 中使用 JSON Schema 校验请求参数,可以通过在路由定义时指定 schema 属性来实现。以下是一个示例:

在这个示例中,我们定义了一个 POST 路由 /user,并在 schema 中指定了请求体的 JSON Schema。如果请求体不符合定义的 Schema,Fastify 会自动返回一个 400 错误响应。

本题详细解读

1. JSON Schema 的作用

JSON Schema 是一种用于描述 JSON 数据结构的标准。在 Fastify 中,JSON Schema 主要用于校验请求参数(如请求体、查询参数、路径参数等),确保它们符合预期的格式和类型。

2. 如何在 Fastify 中使用 JSON Schema

在 Fastify 中,可以通过在路由定义时指定 schema 属性来使用 JSON Schema。schema 属性可以包含以下字段:

  • body: 校验请求体。
  • query: 校验查询参数。
  • params: 校验路径参数。
  • headers: 校验请求头。

每个字段的值都是一个 JSON Schema 对象,用于描述对应参数的结构和类型。

3. 示例解析

在推荐答案的示例中,我们定义了一个 POST 路由 /user,并在 schema 中指定了 body 的 JSON Schema:

  • type: 'object' 表示请求体必须是一个对象。
  • required: ['name', 'age'] 表示请求体必须包含 name 和 age 两个字段。
  • properties 定义了 name 和 age 的类型,name 必须是字符串,age 必须是数字。

如果请求体不符合这个 Schema,Fastify 会自动返回一个 400 错误响应,并附带详细的错误信息。

4. 自定义错误响应

如果需要自定义错误响应,可以使用 Fastify 的 setErrorHandler 方法:

在这个示例中,我们捕获了所有验证错误,并返回了一个自定义的错误响应。