Я новичок в Fastify и не хочу писать объекты схемы JSON с нуля, а использую интерфейсы и типы TypeScript, предоставляемые существующим контроллером доступа к данным. Как я могу преобразовать эти интерфейсы/типы TS в схемы JSON либо во время разработки, либо во время выполнения для использования Fastify, чтобы лучше поддерживать проверку RESTful API? Заранее спасибо.






Согласно документации 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;
}
);
Будет ли что-то вроде это работать?