Skip to content

Latest commit

 

History

History
108 lines (71 loc) · 2.88 KB

README.md

File metadata and controls

108 lines (71 loc) · 2.88 KB

rest-buddy Build Status Circle CI npm npm

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 fashion

RestBuddy 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 handlers

and 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:

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

npm i  

You can run tests one time

npm tst

Or you can run tests on changes

npm start

Build the final compiled lib with

npm run build