如何将 TypeScript 接口和类型转换为 JSON 以实现 Fastify 互操作性

问题描述 投票:0回答:1

我是 Fastify 的新手,我不想从头开始编写 JSON 模式对象,而是利用从现有数据访问控制器公开的 TypeScript 接口和类型。如何在开发时或运行时将这些 TS 接口/类型转换为 JSON 模式,以供 Fastify 使用以更好地支持 RESTful API 验证?预先感谢您。

typescript jsonschema fastify
1个回答
0
投票

根据 Fastify 文档,您可以通过使用类型提供程序来实现您想要的。

在下面的示例中,我使用 Typebox 生成要在运行时使用的 TypeScript 类型和 JSON 模式兼容对象

import Fastify, { type RequestGenericInterface } from "fastify";
import { type TypeBoxTypeProvider } from "@fastify/type-provider-typebox";
import { type Static, Type } from "@sinclair/typebox";

const UserSchema = Type.Object({ username: Type.Optional(Type.String()) });

type UserType = Static<typeof UserSchema>;

const app = Fastify().withTypeProvider<TypeBoxTypeProvider>();

interface RequestPayloadType extends RequestGenericInterface {
  Querystring: UserType;
}

app.get<RequestPayloadType>(
  "/user",
  { schema: { querystring: UserSchema } },
  (req, _) => {
    const result = req.query.username ?? "no-name";
    return result;
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.