Skip to content

Latest commit

 

History

History
92 lines (71 loc) · 2.85 KB

File metadata and controls

92 lines (71 loc) · 2.85 KB

Scalar Fastify API Reference Plugin

Version Downloads License Discord

This plugin provides an easy way to render a beautiful API reference based on a OpenAPI/Swagger file with Fastify.

Screenshot of an API Reference

Installation

npm install @scalar/fastify-api-reference

And then register it with Fastify:

await fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
})

Usage

If you have a OpenAPI/Swagger file already, you can pass an URL to the plugin:

// Render an API reference for a given OpenAPI/Swagger spec URL
fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
  configuration: {
    title: 'Our API Reference',
    spec: {
      url: '/openapi.json',
    },
  },
})

With @fastify/swagger you can even generate your OpenAPI documents from the registered routes and directly pass it to the plugin:

await fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
  configuration: {
    spec: {
      content: () => fastify.swagger(),
    },
  },
})

Actually, we’re picking it up automatically, so this would be enough:

await fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
})

Or, if you just have a static OpenAPI spec, you can directly pass it, too:

await fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
  configuration: {
    spec: {
      content: { … }
    },
  },
})

We wrote a detailed integration guide for Fastify.

The fastify plugin takes our universal configuration object, read more about configuration in the core package README.

Themes

By default, we’re using a custom Fastify theme and it’s beautiful. But you can choose one of our other themes, too:

await fastify.register(require('@scalar/fastify-api-reference'), {
  routePrefix: '/reference',
  configuration: {
    theme: 'purple',
  },
})