jaumard / trailpack-design-first

Design first architecture with Swagger and Trails
MIT License
0 stars 0 forks source link

trailpack-design-first

Gitter NPM version Build status Dependency Status Code Climate

Design first architecture Trailpack. This trailpack allow you to map routes/validations from your swagger definition file to your controllers. Like this you are sure what's on your definition is really what is implemented.

What are Footprints?

Footprints automatically generate easy-to-use RESTful endpoints for your models.

Install

$ npm install --save trailpack-design-first

Configure

// config/main.js
module.exports = {
  packs: [
    // ... other trailpacks
    require('trailpack-design-first')
  ]
}
// config/swagger.js
module.exports = {
  swaggerDefinition: './swagger/definition.yaml', // or an array of swagger definition
  swaggerUi: './swagger/ui',
  swaggerDefinitionHttpPath: '/swagger',
  swaggerUiHttpPath: '/swagger-ui'

}

swaggerDefinition: path to your yaml or json definition file, also can be an array of swagger definition

swaggerUi: path to your swagger ui files (download them from swagger-ui and put the dist content).

swaggerDefinitionHttpPath: path where to access the swagger definition from the web (eg http://localhost:3000/swagger/{filename})

swaggerUiHttpPath: path where to access the swagger ui interface from the web (eg http://localhost:3000/swagger/ui)

Usage

Just create your swagger definition like you do normally, the only difference is that for each operationId you should put the name and method of the controller that will implement this functionality (UserController.getProfile for example).

Another solution if you don't want to have the controller name inside the operationId is to add x-swagger-router-controller at route or operation level with the name of your controller

If you want to apply some policies to your operation you can use x-swagger-router-policies (eg PermissionPolicy.check,MyPolicy.func).

The trailpack will create the route and validation of headers/query/params and body for you.

Put x-swagger-router-policies on your security definitions to let the trailpack map the security policies for you

Contributing

We love contributions! Please check out our Contributor's Guide for more information on how our projects are organized and how to get started.

License

MIT