Skip to content

ozonep/openapi-fastify-codegen

Repository files navigation

OpenAPI Fastify Code Generator

Use your OpenAPI 3 YAML spec to generate Node.js + Fastify code for your API!


npm

Motivation behind this project

There are many good code generators on npm, however, I couldn't find one that really suits my needs.

Here's why:

  • Generator should be written in JS/TS so I could contribute and/or change some logic if I need to
  • Instead of being a tool that generates server "on-the-fly" (under the hood) from YAML every time you start it, I want "one-time" tool to generate server code
  • Generated code structure should be readable & similar to ordinary server code, no abstractions and/or code specific to this generator
  • Validation of requests/responses based on schema taken from OpenAPI spec
  • Fastify support
  • Ready for Docker
  • Not abandoned

So this project was born.

Generated code features:

  • One-time operation, after generation you don't need original YAML file
  • Easy to read - generated code looks just like normal server code, no abstractions.
  • Uses Fastify - the fastest web framework for Node.js
  • Validation based on ajv-oai
  • Configured for Docker use (includes Dockerfile)

Generated code structure

|- package.json  
|- Dockerfile            
|+ src/
 |- index.js    
 |+ lib/       
 |+ routes/
 |+ schema/
 |+ services/
  

Install

To use it from the CLI:

npm install -g openapi-fastify-codegen

Usage

From the command-line interface (CLI)

  Usage: ofc <YamlFile> [options]


  Options:
    -o, --output <outputDir>       directory where to put the generated files

Example:

ofc patstore-expanded.yaml -o ./petstore 

Local Testing:

Clone this repo, and run this:

node cli.js tests/openapi3/petstore-expanded.yaml -o ./generated/petstore

to generate code from test YAML.

Example

You can find generated code in example/petstore folder.

Requirements

  • Node.js v13.2+ (Project uses ES modules)

Contributing

Any contributions are greatly appreciated.
If you have any suggestions/bug reports - please create an issue!

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

About

Server Generator based on OpenAPIv3 spec file

Resources

License

Stars

Watchers

Forks

Packages

No packages published