/node-hapi-raml

Parse RAML and configure Hapi routes automatically

Primary LanguageJavaScript

Build Status NPM hapi-raml

This library will take your RAML, parse it using raml-parser, and then set up routes in hapi to match your RAML.

##Installation

npm install hapi-raml

##Usage

Require in hapi-raml, and pass it a reference to your hapi server, a hashmap of your Controllers, and the path to your RAML.

When you're ready, call hookup(), and hapi-raml will link up your hapi routes to your Controllers, and return a Promise that will tell you when it has finished. Then you can start your hapi server.

var HapiRaml = require('hapi-raml');
var server = new Hapi.Server();

var controllers = {};
controllers.MyController = new MyController();

var hapiRaml = new HapiRaml(server, controllers, './my.raml');

server.connection({ port: 3000 });

hapiRaml.hookup().then(function () {
    server.start();
});

##Conventions

We borrow the collection/collection-item pattern from RAML and layer Controllers on top.

Your Controllers should feature at least the following functions, which should expect to receive the Hapi object request, and a callback reply.

#####GET (API Root)/collection maps to list()

Returns an Array of instances of the matching Model for this Controller.

#####POST (API Root)/collection maps to create()

Create a single instance of the matching Model for this Controller.

#####GET (API Root)/collection/{id} maps to fetch()

Returns a single instance of the matching Model for this Controller.

#####DELETE (API Root)/collection/{id} maps to delete()

Deletes the matching Model for this Controller.

#####POST||PATCH (API Root)/collection/{id} maps to update()

Updates the matching Model for this Controller.

#####ANY (API Root)/collection/{id}/(anything) maps to (anything)()

Whatever you decide!