realm-router
v1.1.35
Published
Realm router is a bleeding edge restful framework (ec7 + decorators), based on realm dependency injection.
Downloads
43
Readme
realm-router
Realm router is a bleeding edge restful framework (ec7 + decorators), based on realm dependency injection.
Features
- Dependency injection
- Decorators that support local injection and method interception
- Promised based (no need in res.send)
- Automatic method mapping
"use realm";
import route, cors from realm.router.decorators;
import Session as session from realm.test;
@route("/")
@cors()
class MainRouter {
@session()
static get($session, $params, $query, $body) {
return { hello : "world"}
}
}
Installing
npm install realm-js realm-router --save
Feed realm middleware into express
var realm = require('realm-js');
var router = require('realm-router');
realm.require('realm.router.Express', function(router) {
app.use(router("your.package.with.routes", {
prettyTrace: true
}))
});
Routing
Create a class in a dedicated package.
"use realm";
import route from realm.router.decorators;
@route("/")
class MainRouter {
static get() {
return { hello : "world"}
}
}
export MainRouter
Use "@route" decorator to define a path. This is pretty straightforward path2regexp. Each http method corresponds to according static method in the class.
static get() {}
static post() {}
static put() {}
static delete() {}
Route injections
There are few "local" injections that are available
| Name | Description | | --- | --- | | $req | express request | | $res | express response | | $query | Query getter $query.get('hello') | | $body | Body getter $body.get('hello') |
You can inject anything else using decorators
Decorators
Decorators are in realm-router are very powerful thing. You can intercept and inject dependencies into methods;
Let's create a helloWorld decorator
"use realm";
import Decorator from realm.router;
class HelloWorld {
static inject() {
return {
$hello: "my new $hello injection"
}
}
static intercept($query)
{
if( $query.get('hello') ){
return {hello : "intercepted!"}
}
}
}
export Decorator.wrap(HelloWorld);
Inject
inject method could return an object with injections. The latter ones will be injected into the target
Intercept
intercept method might return an object which will prevent the target route from being executed. An object will be displayed instead.