OpenAPI
This is guide to serve the document generated by @ts-rest/open-api
through swagger ui with @fastify/swagger
and @fastify/swagger-ui
.
Document generated by @ts-rest/open-api
is in json format that can be serve as static asset without swagger ui.
Installation
- pnpm
- npm
- yarn
pnpm add @fastify/swagger @fastify/swagger-ui
npm install @fastify/swagger @fastify/swagger-ui
yarn add @fastify/swagger @fastify/swagger-ui
Generating a OpenAPI Document
import { myContract } from './my-api';
import { generateOpenApi } from '@ts-rest/open-api';
const openApiDocument = generateOpenApi(myContract, {
info: {
title: 'Posts API',
version: '1.0.0',
},
});
See @ts-rest/open-api
for more information.
Register fastify plugin
import fastify from 'fastify'
import fastifySwagger from '@fastify/swagger'
import fastifySwaggerUI from '@fastify/swagger-ui'
import { openApiDocument } from './document'
const app = fastify()
.register(fastifySwagger, {
transformObject: () => openApiDocument
})
.register(fastifySwaggerUI)