node-flask
v1.5.4
Published
Microserver for nodejs based based on python flask.
Downloads
13
Maintainers
Readme
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.