0.2.0 • Published 10 years ago

em-rest-service v0.2.0

Weekly downloads
40
License
-
Repository
github
Last release
10 years ago

em-rest-service

RESTful Service Middleware for ee-webservice

installation

npm install em-rest-service

build status

Build Status

usage

You need to create controllers for each collection and each resource you plan to make available via the service. a collection is a collection of resources ( «/user» ), a resource is a single resource of a collection ( «/user/3» ).

URLs must be formatted as «collection/id» pairs so that they can parsed by the service

bad

  • user/comment
  • user
  • user/4/comment/images

good

  • /user/4/comment
  • /user
  • /user/4/comment/6/image

See the Joinbox RESTFul Style Guide for more information.

controller

var   Class 		= require('ee-class');

module.exports = new Class({

	// handles the get request on the collection
	get: function(request, response, next) {
		log( request.resource ) // the id of the resource
		log( request.mapping ) // a tree of colelctions which
							   // describe the mapping this resource resides on

		if (request.mapping){
			// the url called was /user/:id/comment/:id 
			// this could be another mapping if there are multiple mappings
			// for the comments collection / resource
			response.render( 200, [] );
		}
		else {
			// the resource was called on the root /comment/:id
			response.render( 200, [] );
		}

		// if this were a resource controller there would be a «resource»
		// property on the request. it would conatin the id / unique key
		// of the requested resource. log(request.resource) // 32432
	}
});

service

var   RESTService 		= require('em-rest-service')
	, Class 			= require('ee-class')
	, CommentCollection = require('CollectionController');


module.exports = new Class({
	inherits: RESTService


	, init: function init() {
		// you may load controllers from a direcotry or do the work yourself
		var commentsCollectionController = new CommentCollection();

		this.use('/user/:id/comment', commentsCollectionController);
		this.use('/comment', commentsCollectionController);

		// load controllers from a diretoy
		var options = {};
		options.controller = './controllers';
		options.controllerOptions = { anything: 'that', should: { be: 'passed' }, to: { the: 'controlers' } };

		init.parent(options);
	}
});

test.js / application

var   MyService		= require('MyService')
	, WebService 	= require('ee-webservice');

// start the webservice
var service = new WebService({
	port: 80
});

// create an instance of my service implementation
var myService = new MyService();
myService.on('load', function(){
	service.listen();
});

// add myservice middleware to the webservice
service.use(myService);
0.2.0

10 years ago

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.3

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago