A hapi plugin that will expose a RESTful CRUD interface using your Dogwater models and Bedwetter's route-handler.
E.g.: If you've defined a Person model through Dogwater, using this plugin will automatically expose the following routes:
GET /person List all Persons
GET /person/{id} Get one Person by id
POST /person Create a new Person
POST /person/{id} Update a Person by id
PATCH /person/{id} Update a Person by id
DELETE /person/{id} Delete a Person by id
This plugin uses ES6 features and it works like charm with iojs > 2.0. If you are planing to use it with non ES6-enabled engines, consider using Babel.js.
npm install --save crudy
Don't forget that hapi, Dogwater and Bedwetter should be already dependencies of your project, defined in the package.json
file. These are in facts peer-dependencies.
This module can be used as common Hapi.js plug-in, configuring it in the plugin
section of the manifest.json
of your application:
"crudy": {
"person": {
"config": {
"tags": ["api"],
"notes": "Notes...",
"handler": {
"bedwetter": {
"prefix": "/api/v1"
}
}
},
"actions": {
"find": true,
"findOne": true
}
}
}
or using the server.register()
method and passing this object as options.
Note that you can pass routes-specific options to the plug-in: prefixes, notes, tags...
Using the actions
section you can define which actions should be provided by crudy.
Possible actions are:
- find
- findOne
- create
- update
- destroy
If no configuration is passed to the plugin, it will expose the complete CRUD interface, as in the example above.
npm test
Contributions are welcome. Send me your pull-request or open an issue.
- Per-action options (Auth, ACL, Prefix, ...)
- Use Joi for validation in order to unlock Hapi-compliant documentation (lout/swagger)
- Better Unit testing
- Test coverage