Unifying library for the fleek framework. Uses koa2 as a base to leverage swagger documentation and rapidly build documentation driven code.
Requirements:
- Node >= 6.0.0
npm install --save fleek
This package is to be used as middleware for Koa2 to aggregate functionality from the various fleek components:
- fleek-parser - parses swagger doc into a more expressive unified object
- fleek-context - takes koa requests and binds the appropriate swagger path data using routington
- fleek-validator - uses the fleek/swagger context to validate incoming requests
- fleek-router - uses fleek/swagger context to route to provided controllers/operations
For a swagger example, refer to the test swagger json
const Koa = require('koa');
const fleek = require('fleek');
const SWAGGER = require('./swagger.json');
let app = new Koa();
// Parse the request and bind `context.fleek.context` to the appropriate path+method config using the provided swagger
app.use(fleek.context(SWAGGER));
// Validate the request using the fleek context
app.use(fleek.validator().catch((ctx, next) => {
ctx.body = ctx.fleek.validation; // return the specific failures to the client
ctx.status = 400;
return Promise.resolve();
}));
// If `ctx.fleek.context.tags` contains the tag `authenticated`, athenticate the request
app.use(fleek.router.tag('authenticated', (ctx, next) => {
if (someAuthFunction(ctx)) {
ctx.body = 'Not authorized';
ctx.status = 401;
return Promise.resolve();
} else return next();
}))
// Route to controllers using `ctx.fleek.constext.tag[]` which export CRUD methods, and any specially named exported function using operationId
app.use(router.controllers(`${__driname}/controllers`));
// controllers/
// ├── bar.js [exports: get(ctx, next)]
// ├── foo
// | └── biz.js [exports: post(ctx, next)]
// └── */** [exports: createBar(ctx, next)]
app.listen(3000);
Built and maintained with by the Hart team.