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
.
list()
GET (API Root)/collection maps to Returns an Array of instances of the matching Model for this Controller.
create()
POST (API Root)/collection maps to Create a single instance of the matching Model for this Controller.
fetch()
GET (API Root)/collection/{id} maps to Returns a single instance of the matching Model for this Controller.
delete()
DELETE (API Root)/collection/{id} maps to Deletes the matching Model for this Controller.
update()
POST||PATCH (API Root)/collection/{id} maps to Updates the matching Model for this Controller.
(anything)()
ANY (API Root)/collection/{id}/(anything) maps to Whatever you decide!