Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jkheadley/rest-hapi
🚀 A RESTful API generator for Node.js
https://github.com/jkheadley/rest-hapi
api audit-log crud crud-api crud-generator documentation hapi hapi-plugin hapi-server joi joi-validation mongodb mongoose nosql relational rest rest-api swagger validation
Last synced: 26 days ago
JSON representation
🚀 A RESTful API generator for Node.js
- Host: GitHub
- URL: https://github.com/jkheadley/rest-hapi
- Owner: JKHeadley
- License: mit
- Created: 2016-10-30T01:21:20.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-26T17:51:24.000Z (over 1 year ago)
- Last Synced: 2024-04-15T01:59:56.436Z (7 months ago)
- Topics: api, audit-log, crud, crud-api, crud-generator, documentation, hapi, hapi-plugin, hapi-server, joi, joi-validation, mongodb, mongoose, nosql, relational, rest, rest-api, swagger, validation
- Language: JavaScript
- Homepage: https://resthapi.com
- Size: 6.89 MB
- Stars: 1,182
- Watchers: 41
- Forks: 152
- Open Issues: 76
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Support: docs/support.md
Awesome Lists containing this project
README
rest-hapi is a [hapi](https://hapijs.com/) plugin that generates RESTful API endpoints based on [mongoose](http://mongoosejs.com/) schemas. It provides a powerful combination of [relational](https://resthapi.com/docs/associations.html) structure with [NoSQL](https://resthapi.com/docs/creating-endpoints.html) 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](https://resthapi.com/docs/creating-endpoints.html) and [association](https://resthapi.com/docs/associations.html) endpoints with [middleware](https://resthapi.com/docs/middleware.html) support
* [joi](https://github.com/hapijs/joi) [validation](https://resthapi.com/docs/validation.html)
* Route-level and document-level [authorization](https://resthapi.com/docs/authorization.html)
* [Swagger docs](https://resthapi.com/docs/swagger-documentation.html) for all generated endpoints
* [Query parameter](https://resthapi.com/docs/querying.html) support for searching, sorting, filtering, pagination, and embedding of associated models
* Endpoint activity history through [Audit Logs](https://resthapi.com/docs/audit-logs.html)
* Support for [policies](https://resthapi.com/docs/policies.html) via [mrhorse](https://github.com/mark-bradshaw/mrhorse)
* [Duplicate fields](https://resthapi.com/docs/duplicate-fields.html)
* Support for ["soft" delete](https://resthapi.com/docs/soft-delete.html)
* Optional [metadata](https://resthapi.com/docs/metadata.html) for documents
* Mongoose [wrapper methods](https://resthapi.com/docs/mongoose-wrapper-methods.html)
* ...and more!---
## Live demo![rest-hapi-demo-optimized](https://user-images.githubusercontent.com/12631935/41813184-b31cac6a-76e5-11e8-84c3-881d98e6c65d.gif)
View the swagger docs for the live demo:
https://demo.resthapi.com
Or, for a more complete example, check out the [appy](https://appyapp.io) api:
https://api.appyapp.io
## Documentation
Check out the docs on the [official site](https://resthapi.com)!
## Requirements
You need [Node.js](https://nodejs.org/en/) installed and you'll need [MongoDB](https://docs.mongodb.com/manual/installation/) installed and running.
## Quick Start
![rest-hapi-demo-alt-optimized](https://user-images.githubusercontent.com/12631935/41813206-0d2298a0-76e6-11e8-95d4-9b1e521c179e.gif)(**NOTE:** For an alternative quick start, check out his [awesome yeoman generator](https://github.com/vinaybedre/generator-resthapi) for rest-hapi.)
1) Clone the demo repo
```
$ git clone https://github.com/JKHeadley/rest-hapi-demo.git
$ cd rest-hapi-demo
```2) Install the dependencies
```
$ npm install
```3) Seed the models
```
$ ./node_modules/.bin/rest-hapi-cli seed
```4) Start the server
```
$ npm start
```5) View the API docs at
[http://localhost:8080/](http://localhost:8080/)
...have fun!
## Example Projects
[appy](https://github.com/JKHeadley/appy): A boilerplate web app.
[rest-hapi-demo](https://github.com/JKHeadley/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](https://resthapi.com/)
- Report bugs
- Follow us on [Twitter](https://twitter.com/resthapi)
- Participate in the [gitter community](https://gitter.im/rest-hapi/Lobby)
- And [donate financially](https://opencollective.com/rest-hapi)!Please read our [contribution guide](CONTRIBUTING.md) to get started. Also note
that this project is released with a
[Contributor Code of Conduct](CODE_OF_CONDUCT.md), please make sure to review
and follow it.## Contributors
Thanks goes to each one of our contributors! 🙏
[Become a contributor](CONTRIBUTING.md).
## Backers
Support us with a monthly donation and help us continue our activities!
[Become a backer](https://opencollective.com/rest-hapi#backers).## Questions?
If you have any questions/issues/feature requests, please feel free to open an [issue](https://github.com/JKHeadley/rest-hapi/issues/new). We'd love to hear from you!## Support
Like this project? Please star it!## License
rest-hapi is licensed under a [MIT License](LICENSE).