developit / Resource Router Middleware
Licence: bsd-3-clause
🚴 Express REST resources as middleware mountable anywhere
Stars: ✭ 124
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
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
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
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].