/baiji

A powerful and customizable Rest API framework built on top of express, supports validations, sanitizers, api presenters e.g.

Primary LanguageJavaScriptMIT LicenseMIT

Baiji (白鱀豚 🐬)

Build Status npm version npm GitHub license

Bring the 🐬(beauty) back to life.

Baiji is an easy to use and opinionated micro-framework for writing scalable and REST-like web applications.

Baiji is an ideal candidate for building robust, scalable and secure web things.

Features

  • Adapters support: Express, Socket.io, more supports will comming soon
  • Hooks, enabling the power of scalability of your api method
  • Modern Controller syntax
  • Smart routes sorter
  • Sweet debug info
  • Built-in parameter filter
  • Entities - a simple Facade to use with your models and API

Basic Use Case Preview

Using ES6 Syntax

const baiji = require('baiji');
const app = baiji('my-example-app');

class UsersCtrl extends baiji.Controller {
  constructor() {
    super();
    // Use before actions
    this.beforeAction('signInRequired');
  }

  initConfig() {
    return {
      search: {
        description: 'Search users...',
        route: { path: '/', verb: 'get' }
      }
    }
  }

  signInRequired(ctx, next) {
    if (ctx.state.isSignedIn()) return next();
    ctx.done({ error: 'Unauthorized' });
  }

  search(ctx, next) {
    ctx.done([{ username: 'lyfeyaj', gender: 1 }], next);
  }
}

// Use express middleware: response-time
app.use(require('response-time')());
// Use express middleware: cookie-parser
app.use(require('cookie-parser')());

// Use controller
app.use(UsersCtrl);

// Start app and listen on port 3000
app.listen(3000);

TODOs

  • Add RPC support

License