https://github.com/homezen/rest-buddy
[DEPRECATED] Resourceful Framework that's got your back
https://github.com/homezen/rest-buddy
Last synced: 2 months ago
JSON representation
[DEPRECATED] Resourceful Framework that's got your back
- Host: GitHub
- URL: https://github.com/homezen/rest-buddy
- Owner: homezen
- License: bsd-3-clause
- Created: 2015-07-08T22:18:10.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-10-11T19:00:51.000Z (over 7 years ago)
- Last Synced: 2025-03-02T22:35:19.460Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 379 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rest-buddy [](https://travis-ci.org/home-buddy/rest-buddy) [](https://circleci.com/gh/home-buddy/rest-buddy) [](https://www.npmjs.com/package/rest-buddy) [](https://github.com/home-buddy/rest-buddy/blob/master/LICENSE)
Resourceful Framework that's got your back
## Overview
RestBuddy is a light framework for creating JSON RESTy APIs. Currently it provides a middleware for Express, but could also provide one for Koa in the future. The overall design goals are:
* Strong validation of request body, request parameters, and response body
* Fast and easy to create standard REST endpoints, but not overly restrictive
* Ability to procedurally generate documentation (perhaps in the future via Swagger)
* Easily testable controller action handlers
* Standard middleware that can be composed with other middleware in the standard fashionRestBuddy is an instantiatable class that takes in it constructor
* The resource name
* A specification for actions (action name, method, url, validation schemas, human readable info)
* A controller that exports action handlersand provides getters for
* Express middleware that serves the resource
* The decorated specification (that includes generated REST actions)
* (future) Human readable documentation in markdown
* (future) Koa middleware that serves the resource## Usage
### Idiomatic REST with no validations
A completely idiomtic REST endpoint (with no validation) would look like:
```js
var app = require('express')(),
RestBuddy = require('rest-buddy'),spec = {}, // RestBuddy autofills this for standard REST actions
controller = {
index: function(req) { return {status: 200, data: {'ok'}}; },
create: function(req) { return {status: 200, data: {'ok'}}; },
show: function(req) { return {status: 200, data: {'ok'}}; },
update: function(req) { return {status: 200, data: {'ok'}}; },
destroy: function(req) { return {status: 200, data: {'ok'}}; }
},smurfsResource = new RestBuddy('smurfs', spec, controllers);
app.use(smurfsResource.middleware).listen(1337);
```We can now use the following methods on the following URLs
```
GET /smurfs => 200 'ok'
POST /smurfs => 200 'ok'
GET /smurfs/42 => 200 'ok'
PUT /smurfs/42 => 200 'ok'
DELETE /smurfs/42 => 200 'ok'
```### Idiomatic REST with validations
Lorem
### REST + custom actions
Lorem
## Components
### RestBuddy
Lorem
### Specification
Lorem
### Controller
Lorem
## Development
Clone and install deps
```bash
npm i
```You can run tests one time
```bash
npm tst
```Or you can run tests on changes
```bash
npm start
```Build the final compiled lib with
```bash
npm run build
```