1.0.0 • Published 5 years ago

express-autumn v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

express-autumn

Autumn is a wrapper for Express that eliminates some boilerplate code. By using decorators on class methods, you are able to define the route and have passport JWT wrap the endpoint.

Getting Started

First create a launcher class that extends AutumnApp and then use the @appConfig decorator to pass the settings.

import bodyParser from "body-parser";
import cors from "cors";
import autumn from 'express-autumn';

@autumn.appConfig({ 
    port: 8000,
    searchPaths: ['./src/users'],
    jwtSecret: process.env.secret || 'JWT_SECRET'
})
class Main extends autumn.AutumnApp {
    preRoute = (app) => {
        var corsOptions = {
            methods: ['GET','PUT','POST','DELETE','PATCH','OPTIONS'],
            allowedHeaders: ['Content-Type', 'Authorization']
          };
        app.use(cors(corsOptions));
        
        app.use(bodyParser.json());
        app.use(bodyParser.urlencoded({ extended: true }));                
    }

    postRoute = (app) => {
        app.get('/', (req, res) => {
            res.send('Invalid endpoint!');
        });
        
        app.use(function(error,req,res,next){
          console.log("ERROR: "+error,error.stack);
          res.status(500).end();
        });        
    }
}

const main = new Main();
main.start();

The settings passed to @appConfig are:

  • port : The port number express will be launched on
  • searchPaths : This is an array of paths that Autumn will search through for endpoints
  • jwtSecret : The secret string that passport uses for JWT.

To define endpoints, create a class and then decorate the methods you want exposed.

import autumn from 'express-autumn';

class UserEndpoint {

    @autumn.endpoint('/login','get',true)
    logMeIn(req,res,next) {
        console.log('logMeIn');
        res.status(200).end();
    }
}

export default UserEndpoint;

The method will be passed the standard request, response, next parameters from express. The parameters for the endpoint decorator are:

  • The URI path for the endpoint
  • The supported request method. Valid values are : 'get', 'post', 'delete', or 'put'
  • Authentication flag. If true, Autumn will wrap the endpoint with passport jwt