rest-io
v5.0.0
Published
REST resource generator
Downloads
8
Maintainers
Readme
REST.IO
Small extendable REST framework for express and mongoose.
Installation
$ npm install rest-io --save
Versioning
This project is not using Semantic Versioning. Instead we are using Feature Versioning
New in v5.0.0
- Roles can now be updated via the API with Authorization rights
Note only ADMIN users can modify roles in this implementation,
extend
UserResource
for a more specific implementation
Features
- Custom Resource declarations
- Automatic resource routing
- Sub resource binding
- Standard CRUD binding
- Bind all resources found in folder
- User Authentication
- User Authorization
- Sub Resource for Sub Documents
- Authenticated Sub Resource for Sub Documents
- Typescript definitions
- Sub Documents can be populated
- pluralize used for automatic pluralizing
- all resources are searchable
- all resources have population controllable
- Typescript definitions are automatically loaded
Roadmap
- More default operations:
- count
- exists
- batch update
- Documentation generation
Reference
Quick Start
It's easy and fast to use rest.io. To start using rest.io see the next few steps:
Install the necessary node modules:
$ npm i rest-io -S
Create a resource:
import { Resource } from 'rest-io';
export const foodResource = new Resource({
name: 'food',
model: {
name: String
}
});
Create an app:
const * as express from 'express';
const RestIO from 'rest-io';
const * as mongoose from 'mongoose';
export const app = express();
// register the express app with rest.io
new RestIO(app, {
resources: __dirname + '/resources'
});
mongoose.connect('mongodb://localhost:27017/test');
app.listen(3000, function () {
console.log('Server has started under port: 3000');
});
Start the server:
node app.js
Resource is now available as:
Method | Url | Action ------ | ------------------ | --------- GET | /api/foods | get all POST | /api/foods | create GET | /api/foods/:foodId | get by id PUT | /api/foods/:foodId | update DELETE | /api/foods/:foodId | delete
new RestIO(app)
Registers the app with rest-io
. This allows rest-io
to bind the routings automatically. The bodyParser
module will be used to parse the json
requests.
new RestIO.Resource(config)
Resources are routed automatically with the configuration provided. These configurations are provided to the Resource
constructor.
Property | Description | Type | Default
-------------- | --------------------------------------------------------------------- | -------- | ----------
name | The name of the resource | String | Mandatory
model | The mongoose Schema
config | Schema | Mandatory
parentRef | The parent reference of the resource to be populated during retrieval | String |
populate | The children to populate, space separated | String |
plural | The plural form of the resource name | String | pluralize
parentResource | The parent of this resource | Resource |