express-restful-es6
v1.0.1
Published
ES6 Restful Api for Express
Downloads
17
Maintainers
Readme
Express Restful ES6
express-restful-es6 is a node.js express library which handles HTTP requests and makes much easier creating Restful APIs. It uses @Rest('/path') annotation put on es6 class, which indicates that annotated class is Express router.
Installation
$ npm install --save express-restful-es6
Getting Started
Configuration
import express from 'express';
import restful from 'express-restful-es6';
var server = express();
restful.configure(server,{
dirname:__dirname+'/resources'
});
dirname
- Routers' Directory
folder structure example
-------node_modules
|--server.js
|--resources
|--resource-a.js
|--resource-b.js
|--sub-folder
|--resource-c.js
|--resource-d.js
...
Define Resource
Simple examples
import {Rest} from 'express-restful-es6';
@Rest('/')
class SimpleResource {
get(){
return { msg: 'hello '}
}
}
With parameters
import {Rest} from 'express-restful-es6';
@Rest('/test/:name')
class SimpleResource {
get(name){
return { msg: `hello${name}`}
}
}
express-restful-es6 package supports following HTTP Methods: GET
, POST
, PUT
, DELETE
, PATCH
, HEAD
import {Rest} from 'express-restful-es6';
@Rest('/test')
class SimpleResource {
get(){
console.log(this.query)
return { msg: {
query : this.query
}
}
}
post(){
console.info(this.body);
return { msg: {
body : this.body
}
}
}
put(){
console.info(this.body);
return { msg: {
body : this.body
}
}
}
delete(){}
patch(){}
head(){}
}
express-restful-es6 package also has a use() method which works like in express
import {Rest} from 'express-restful-es6';
@Rest('/api')
class ApiResource {
use(){
//authorize
console.info("authorize");
this.next();
}
}
@Rest('/api/test')
class TestApiResource {
get(){
return {
success:true
}
}
express-restful-es6 has @middleware annotation which adds express middleware on route methods
import {Rest,middleware} from 'express-restful-es6';
@Rest('/api/test')
class TestApiResource {
@middleware((req,res,next)=>{ /**...**/ next()})
get(){
return {
success:true
}
}
in express-restful-es6 express' send() and render() functions can be used like this:
import {Rest} from 'express-restful-es6';
@Rest('/api/send')
class TestApiResourceSend {
get(){
return this.send("<div>hello</div>")
}
}
@Rest('/api/send')
class TestApiResourceRender {
get(){
return this.render("index")
}
}
In express-restful-es6 can be Promises for handling responses like this:
import {Rest} from 'express-restful-es6';
@Rest('/')
class HomeResource {
async(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve("hello");
},1000)
})
}
get(){
return this.async();
}
}
All sample code can be found in directory 'test'.