node-flask

    1.5.4 • Public • Published

    Node Flask

    Node implementation flask like server framework. With the introduction of function decorators and classes we are able to make a small and easy to implement routing system. This is build on koa2 for their support of es2016 functionality and because of its small foot print when compared to express. I am using koa@2 because all routes are handled though blueprint classes and passing a context to a function as a parameter and allowing this to still refer to the blueprint helps class logic. Even though we are using koa@2 you do not have to run you code though a compiler such as babel (though this step makes function decorators posible).

    API

    Server() => Server

    Main server to run blueprint classes. Extends Koa Class from koa@2.

    Option type description
    port Number Http port to listen on
    blueprints Object|Array|String (optional) Blueprints or path to blueprint classes

    Example

    const { Server } = require("node-flask")
    const MainRoutes = require("./MainRoutes")
    const server = new Server({
      port: 5000,
      blueprints: [MainRoutes],
    })
    server.start()

    Server#start() => Promise

    Run server from configuration Example

    const server = // ...from example above
    server.start()
    .then(() => console.log("Server online on port 5000"))
    .catch(err => console.error(`An error occurred (such as port in use)`, err.stack))

    #prefix(prefix: string, ...middleware: fn) => decorator

    Class decorator for blueprint class level configuration.

    #all(path: string, ...middleware: fn) => decorator

    Handle all http requests on path.

    #get(path: string, ...middleware: fn) => decorator

    Handle all GET http requests on path.

    #post(path: string, ...middleware: fn) => decorator

    Handle all POST http requests on path.

    #put(path: string, ...middleware: fn) => decorator

    Handle all PUT http requests on path.

    #patch(path: string, ...middleware: fn) => decorator

    Handle all PATCH http requests on path.

    #del(path: string, ...middleware: fn) => decorator

    Handle all DELETE http requests on path.

    Example (babel w/ transform-legacy-decorators)

    const flask = require("node-flask")
     
    @flask.prefix("/main", middlewarefunction)
    class MainRoutes {
     
      @flask.get("/home")
      async home(ctx) {
        const data = await getData()
        ctx.body = data
      }
    }

    Example (node6)

    const flask = require("node-flask")
     
    class MainRoutes {
      constructor() {
        this.prefix = "/main"
        this.routes = flask.registerRoutes(this, {
          home: flask.get("/home"),
        })
      }
     
      *home(ctx) {
        const data = yield getData()
        ctx.body = data
      }
    }

    TODO:

    • Write more tests for Server
    • Add helpful middleware and more decorators upon need

    Contributions:

    Feedback, use cases and code is all appreciated. Simply make an issue or pull request on the github repo.

    Install

    npm i node-flask

    DownloadsWeekly Downloads

    2

    Version

    1.5.4

    License

    MIT

    Last publish

    Collaborators

    • ccutch