I had been using Swagger with custom configuration and directory structure in node application.
Here is snippet of my app.js
var swaggerConfig = {
appRoot: config.get('app_root'),
configDir: 'swagger/config',
swaggerFile: 'swagger/api.yaml'
};
SwaggerExpress.create(swaggerConfig, function(err, swaggerExpress) {
if (err) { throw err; }
swaggerExpress.register(app);
});
Under config swagger/config directory having standard YAML configuration default.yml.
# swagger configuration file
# values in the swagger hash are system configuration for swagger-node
swagger:
fittingsDirs: [ app/fittings ]
defaultPipe: null
swaggerControllerPipe: swagger_controllers # defines the standard processing pipe for controllers
# values defined in the bagpipes key are the bagpipes pipes and fittings definitions
# (see https://github.com/apigee-127/bagpipes)
bagpipes:
_router:
name: swagger_router
mockMode: false
mockControllersDirs: [ app/mocks ]
controllersDirs: [ app/controllers ]
_swagger_validate:
name: swagger_validator
validateResponse: true
# pipe for all swagger-node controllers
swagger_controllers:
- onError: json_error_handler
- cors
- swagger_security
- _swagger_validate
- express_compatibility
- _router
# pipe to serve swagger (endpoint is in swagger.yaml)
swagger_raw:
name: swagger_raw
# any other values in this file are just loaded into the config for application access...
Now having issue that on controller req.swagger.params always return null.
This is unclear from the documentation, but you also need to add swagger_params_parser to swagger_controllers section in your default.yaml.
bagpipes:
_router:
name: swagger_router
mockMode: false
mockControllersDirs: [ api/mocks ]
controllersDirs: [ api/controllers ]
_swagger_validate:
name: swagger_validator
validateResponse: true
# pipe for all swagger-node controllers
swagger_controllers:
- swagger_params_parser
- cors
- swagger_security
- _swagger_validate
- _router
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With