Skip to content

ccutch/node-flask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.

About

Node microserver based on python flask

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published