Skip to content

Allows for easy & extensible CRUD REST API generation using Express & Mongoose

License

Notifications You must be signed in to change notification settings

mattbalmer/monsoon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monsoon

Extensible REST API Generator

Monsoon allows for easy, extensible CRUD REST API generation using Express & Mongoose.

Installation

$ npm install monsoon

Monsoon requires both express and mongoose.

Quick Start

Using monsoon is easy. Let's assume you have a Schema called Product. Your API router might look something like this:

var express = require('express')
    , monsoon = require('monsoon')
    , mongoose = require('mongoose')
    , Product = mongoose.model('Product')
    , app = module.exports = express();

// Resources
app.use( '/products', monsoon.router(Product).export() );

That's it! You now have routes in place for some of the more common REST operations.

Routes

Currently, Monsoon will generate the following routes & controllers. All various responses and the HTTP codes associated with them have been included.

METHOD /PATH (example)

Params: any URL parameters the method requires
Body: any URL parameters the method requires
Returns: ### what the controller returns in the response body

GET /

Returns: 200 a JSON array of all documents in the collection
Returns: 500 an error string

POST /

Body: a JSON representation of the document to be created
Returns: 200 a JSON representation of the created document
Returns: 409 an error string
Returns: 500 an error string

GET /:id

Params: a 24-character Mongo ID
Returns: 200 a JSON representation of the document in the collection with the given ID
Returns: 404
Returns: 500 an error string

PUT /:id

Params: a 24-character Mongo ID
Body: a JSON representation of the updated document
Returns: 200 a JSON representation of the updated document
Returns: 404
Returns: 500 an error string

PATCH /:id

Params: a 24-character Mongo ID
Body: a JSON object containing the fields & values to update the document with
Returns: 200 a JSON representation of the updated document
Returns: 404
Returns: 500 an error string

DELETE /:id

Params: a 24-character Mongo ID
Returns: 204
Returns: 404
Returns: 500 an error string

Extending Monsoon Controllers

So you want to add some routes of your own to Monsoon's defaults? No problem, let's just change our API router to look something like this

var express = require('express')
    , monsoon = require('monsoon')
    , app = module.exports = express();

// Resources
app.use( '/products', monsoon.app(require('./products') );

And create a products.js file, which will look something like this:

var monsoon = require('monsoon')
    , controller = module.exports = monsoon.controllers('Product');

// Custom Controllers
controllers.get('/status', function(req, res) {
    res.json({
        status: 'online'
    })
});

And there you have it. Define any routes you wish on the controllers object just as you would an Express app (var app = express() is common)

Additional Features

//TODO

Support

The following are known issues and will be addressed soon

  • Multiple controller callbacks/middleware ( app.get('/path', middlewareFunction, function(req, res) { ... }) )

Contact & License Info

Author: Matthew Balmer
Twitter: @mattbalmer
Website: http://mattbalmer.com
License: MIT

About

Allows for easy & extensible CRUD REST API generation using Express & Mongoose

Resources

License

Stars

Watchers

Forks

Packages

No packages published