Awesome
<p align="center"><a href="https://resthapi.com" target="_blank" rel="noopener noreferrer"><img width="367" height="298" src="https://user-images.githubusercontent.com/12631935/41144156-931d244c-6ac1-11e8-86e5-24fd5fcda8ec.png" alt="rest-hapi logo"></a></p> <br /> <p align="center"><a href="https://resthapi.com" target="_blank" rel="noopener noreferrer"><img width="150" height="46" src="https://user-images.githubusercontent.com/12631935/41491054-c208589a-70ab-11e8-9bac-b1ad47123a30.png" alt="rest-hapi title"></a></p> <div align="center"> <strong>A RESTful API generator</strong> <a href="https://twitter.com/intent/tweet?text=Generate%20RESTful%20API%20endpoints%20with%20rest-hapi!&url=https://resthapi.com&via=resthapi&hashtags=mongoosejs,hapijs,nodejs,MongoDB"> <img alt="rest-hapi tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"> </a> </div> <br /> <div align="center"> <a href="https://github.com/JKHeadley/rest-hapi"> <img alt="Github Actions" src="https://img.shields.io/github/checks-status/JKHeadley/rest-hapi/master"> </a> <a href="https://codecov.io/gh/JKHeadley/rest-hapi"> <img alt="Codecov" src="https://img.shields.io/codecov/c/github/JKHeadley/rest-hapi.svg?style=flat-square"> </a> <a href="https://www.npmjs.com/package/rest-hapi"> <img alt="npm" src="https://img.shields.io/npm/dm/rest-hapi.svg?style=flat-square"> </a> <a href="https://www.npmjs.com/package/rest-hapi"> <img alt="npm" src="https://img.shields.io/npm/v/rest-hapi.svg?style=flat-square"> </a> <a href="https://stackshare.io/rest-hapi"> <img alt="StackShare" src="https://img.shields.io/badge/tech-stack-0690fa.svg?style=flat-square"> </a> <a href="https://gitter.im/rest-hapi/Lobby"> <img alt="Join the chat at https://gitter.im/rest-hapi/Lobby" src="https://badges.gitter.im/rest-hapi/Lobby.svg?style=flat-square"> </a> </div>rest-hapi is a hapi plugin that generates RESTful API endpoints based on mongoose schemas. It provides a powerful combination of relational structure with NoSQL flexibility. You define your data models and the rest is done for you. Have your API up and running in minutes!
Features
- Automatic generation of CRUD and association endpoints with middleware support
- joi validation
- Route-level and document-level authorization
- Swagger docs for all generated endpoints
- Query parameter support for searching, sorting, filtering, pagination, and embedding of associated models
- Endpoint activity history through Audit Logs
- Support for policies via mrhorse
- Duplicate fields
- Support for "soft" delete
- Optional metadata for documents
- Mongoose wrapper methods
- ...and more!
Live demo
View the swagger docs for the live demo:
Or, for a more complete example, check out the appy api:
Documentation
Check out the docs on the official site!
Requirements
You need Node.js installed and you'll need MongoDB installed and running.
Quick Start
(NOTE: For an alternative quick start, check out his awesome yeoman generator for rest-hapi.)
- Clone the demo repo
$ git clone https://github.com/JKHeadley/rest-hapi-demo.git
$ cd rest-hapi-demo
- Install the dependencies
$ npm install
- Seed the models
$ ./node_modules/.bin/rest-hapi-cli seed
- Start the server
$ npm start
- View the API docs at
...have fun!
Example Projects
appy: A boilerplate web app.
rest-hapi-demo: A simple demo project implementing rest-hapi in a hapi server.
Contributing
We welcome contributions to rest-hapi! These are the many ways you can help:
- Submit patches and features
- Improve the documentation and website
- Report bugs
- Follow us on Twitter
- Participate in the gitter community
- And donate financially!
Please read our contribution guide to get started. Also note that this project is released with a Contributor Code of Conduct, please make sure to review and follow it.
Contributors
Thanks goes to each one of our contributors! 🙏
<a href="https://github.com/JKHeadley/rest-hapi/graphs/contributors"><img src="https://opencollective.com/rest-hapi/contributors.svg?width=890&button=false" /></a>
Backers
Support us with a monthly donation and help us continue our activities! Become a backer.
<a href="https://opencollective.com/rest-hapi#backers"><img src="https://opencollective.com/rest-hapi/backers.svg?width=890" /></a>
Questions?
If you have any questions/issues/feature requests, please feel free to open an issue. We'd love to hear from you!
Support
Like this project? Please star it!
License
rest-hapi is licensed under a MIT License.