Skip to content

seriousme/fastify-swaggergen

Folders and files

NameName
Last commit message
Last commit date
May 15, 2020
May 19, 2018
Sep 22, 2020
Jun 24, 2018
Jun 24, 2018
Apr 28, 2018
May 14, 2018
May 10, 2018
May 15, 2020
May 15, 2018
May 7, 2021
Sep 22, 2020

Repository files navigation

Fastify swagger generator

CI status

A plugin for fastify to autogenerate a configuration based on a OpenApi(v2/v3) specification.


This project has been replaced by Fastify OpenApi Glue


Install:

npm i fastify-swaggergen --save

Plugin

Usage

Add the plugin to your project with register and pass it some basic options and you are done !

const swaggerGen = require("fastify-swaggergen");

const options = {
  swaggerSpec: `${__dirname}/petstore-swagger.v2.json`,
  service: `${__dirname}/service.js`,
  fastifySwagger: {
    disabled: false
  }
};


fastify.register(swaggerGen, options);

All schema and routes will be taken from the OpenApi specification listed in the options. No need to specify them in your code.

Options

  • swaggerSpec: this can be a JSON object, or the name of a JSON or YAML file containing a valid OpenApi(v2/v3) file
  • service: this can be a javascript object or class, or the name of a javascript file containing such an object. If the import of the file results in a function instead of an object then the function will be executed during import.
  • fastifySwagger: an object containing the options for the fastify-swagger plugin. To avoid registering this plugin pass { fastifySwagger: { disabled: true }}

Of these options swaggerSpec and service are mandatory, fastifySwagger is optional.

See the examples section for a demo.

Generator

To make life even more easy there is the swaggergen cli. The swaggergen cli takes a valid OpenApi (v2/v3) file (JSON or YAML) and generates a project including a fastify flugin that you can use on any fastify server, a stub of the service class and a skeleton of a test harness to test the plugin.

Usage

  swaggergen [options] <OpenApi specification>

or if you don't have swaggergen installed:

  npx github:seriousme/fastify-swaggergen <OpenApi specification>

This will generate a project based on the provided OpenApi specification. Any existing files in the project folder will be overwritten! See the generator examples section for a demo.

Options:


  -p <name>                   The name of the project to generate
  --projectName=<name>        [default: generatedProject]

  -b <dir> --baseDir=<dir>    Directory to generate the project in.
                              This directory must already exist.
                              [default: "."]

The following options are only usefull for testing the swaggergen plugin:
  -c --checksumOnly           Don't generate the project on disk but
                              return checksums only.
  -l --localPlugin            Use a local path to the plugin.

See the generator example section for a demo.

Examples

Clone this repository and run npm i

Plugin

Executing npm start will start fastify on localhost port 3000 with the routes extracted from the petstore example and the accompanying service definition

{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "params.petId should be integer"
}
{
  "statusCode": 500,
  "error": "Internal Server Error",
  "message": "Operation findPetsByStatus not implemented"
}
{
  "statusCode": 500,
  "error": "Internal Server Error",
  "message": "name is required!"
}

as the pet returned by service.js does not match the response schema.

Generator

The folder examples/generatedProject contains the result of running swaggergen -l --baseDir=examples examples/petstore/petstore-swagger.v2.yaml. The generated code can be started using npm start in examples/generatedProject (you will need to run npm i in the generated folder first)

License

Licensed under MIT

About

generate fastify routes from a swagger specification

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published