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.
Footprints automatically generate easy-to-use RESTful endpoints for your models.
$ npm install --save trailpack-design-first
// 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)
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
We love contributions! Please check out our Contributor's Guide for more information on how our projects are organized and how to get started.