All Projects → developit → Resource Router Middleware

developit / Resource Router Middleware

Licence: bsd-3-clause
🚴 Express REST resources as middleware mountable anywhere

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Resource Router Middleware

Restyped
End-to-end typing for REST APIs with TypeScript
Stars: ✭ 287 (+131.45%)
Mutual labels:  rest-api, rest, express
Corser
CORS middleware for Node.js
Stars: ✭ 90 (-27.42%)
Mutual labels:  rest, middleware, express
Apicache
Simple API-caching middleware for Express/Node.
Stars: ✭ 957 (+671.77%)
Mutual labels:  rest, middleware, express
Node Express Mongoose Passport Jwt Rest Api Auth
Node, express, mongoose, passport and JWT REST API authentication example
Stars: ✭ 146 (+17.74%)
Mutual labels:  rest-api, rest, express
Express Openapi Validator
🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.x specification
Stars: ✭ 436 (+251.61%)
Mutual labels:  rest-api, middleware, express
Rest Api Nodejs Mongodb
A boilerplate for REST API Development with Node.js, Express, and MongoDB
Stars: ✭ 672 (+441.94%)
Mutual labels:  rest-api, rest, express
Swagger Express Ts
Generate and serve swagger.json
Stars: ✭ 102 (-17.74%)
Mutual labels:  rest-api, rest, express
Rest
REST API generator with Node.js, Express and Mongoose
Stars: ✭ 1,663 (+1241.13%)
Mutual labels:  rest-api, rest
Connect Cas2
NodeJS implement of CAS(Central Authentication Service) client.
Stars: ✭ 91 (-26.61%)
Mutual labels:  middleware, express
Tiledesk Server
Tiledesk server. Tiledesk is an Open Source Live Chat platform written in NodeJs and MongoDB
Stars: ✭ 94 (-24.19%)
Mutual labels:  rest-api, rest
Node Typescript Mongodb
node js typescript mongodb express generator yo
Stars: ✭ 96 (-22.58%)
Mutual labels:  rest-api, rest
Chi
lightweight, idiomatic and composable router for building Go HTTP services
Stars: ✭ 10,581 (+8433.06%)
Mutual labels:  rest-api, middleware
Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+926.61%)
Mutual labels:  rest-api, rest
Http restful api
整理HTTP后台端的RESTful API方面的知识
Stars: ✭ 94 (-24.19%)
Mutual labels:  rest-api, rest
Graphql Serverless
GraphQL (incl. a GraphiQL interface) middleware for the webfunc serverless web framework.
Stars: ✭ 124 (+0%)
Mutual labels:  middleware, express
Ngx Api Utils
ngx-api-utils is a lean library of utilities and helpers to quickly integrate any HTTP API (REST, Ajax, and any other) with Angular.
Stars: ✭ 92 (-25.81%)
Mutual labels:  rest-api, rest
Service Tools
Prepare your Node.js application for production
Stars: ✭ 89 (-28.23%)
Mutual labels:  middleware, express
Min
A minimalistic web framework with route grouping and middleware chaining
Stars: ✭ 95 (-23.39%)
Mutual labels:  rest, middleware
Webpack Hmr 3 Ways
Three ways to set up your webpack hot module replacement: webpack-dev-server CLI, webpack-dev-server API, and express with webpack-hot-middleware.
Stars: ✭ 108 (-12.9%)
Mutual labels:  middleware, express
Airdcpp Webclient
Communal peer-to-peer file sharing application for file servers/NAS devices
Stars: ✭ 106 (-14.52%)
Mutual labels:  rest-api, rest

resource-router-middleware

NPM Gitter

Express REST resources as middleware, mountable anywhere.

Usage

In ES6

import resource from 'resource-router-middleware';

export default resource({
	
	mergeParams: true,
	
	id : 'user',

	load(req, id, callback) {
		var user = users.find( user => user.id===id ),
			err = user ? null : 'Not found';
		callback(err, user);
	},

	list({ params }, res) {
		res.json(users);
	},

	create({ body }, res) {
		body.id = users.length.toString(36);
		users.push(body);
		res.json(body);
	},

	read({ user }, res) {
		res.json(user);
	},

	update({ user, body }, res) {
		for (let key in body) {
			if (key!=='id') {
				user[key] = body[key];
			}
		}
		res.status(204).send();
	},

	delete({ user }, res) {
		users.splice(users.indexOf(user), 1);
		res.status(204).send();
	}
});

In ES5

var resource = require('resource-router-middleware');

var users = [];

module.exports = resource({
	
	mergeParams: true,
	
	/** Property name to store preloaded entity on `request`. */
	id : 'user',

	/** For requests with an `id`, you can auto-load the entity.
	 *	Errors terminate the request, success sets `req[id] = data`.
	 */
	load : function(req, id, callback) {
		var user = users.filter(function(user){ return user.id===id; })[0];
		if (!user) {
			callback('Not found');
		}
		else {
			callback(null, user);
		}
	},

	/** GET / - List all entities */
	list : function(req, res) {
		res.json(users);
	},

	/** POST / - Create a new entity */
	create : function(req, res) {
		var user = req.body;
		user.id = users.length.toString(36);
		users.push(user);
		res.json(user);
	},

	/** GET /:id - Return a given entity */
	read : function(req, res) {
		res.json(req.user);
	},

	/** PUT /:id - Update a given entity */
	update : function(req, res) {
		var id = req.params[this.id];

		for (var i=users.length; i--; ) {
			if (users[i].id===id) {
				users[i] = req.body;
				users[i].id = id;
				return res.status(204).send('Accepted');
			}
		}
		res.status(404).send('Not found');
	},

	/** DELETE /:id - Delete a given entity */
	delete : function(req, res) {
		var id = req.params[this.id];

		for (var i=users.length; i--; ) {
			if (users[i].id===id) {
				users.splice(i, 1);
				return res.status(200);
			}
		}

		res.status(404).send('Not found');
	}
});
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].