siren-resource
Resourceful routing with siren+json hypermedia for Express.
Status - Developer Preview
Here be dragons.
What it does
Creates a bunch of routes for you automatically, based on resources, and maps them to actions. Here's the mapping, right from the source:
// GET /resource -> indexapp; // POST /resource -> createapp; // GET /resource/:id -> showapp; // PUT /resource/:id -> update / appendapp; // DELETE /resource/:id -> deleteapp;
It also automatically sets content type to siren+json, and provides a super easy .entity()
function to help you encode your responses so that they conform to the spec.
Usage
'use strict'; var express = http = resource = bodyParser = methodOverride = collection = resourceadaptersmemory app = server port = 3000 // Collections are the database abstraction layer // that backs your resources. You can initialize // them by passing in an array of models. albums = ; app;app;app;// app.use( log.requestLogger() ); // Once you're ready, hook up your RESTful// routes by passing your collection into// the resource() function.; // Create the serverserver = http; server;
Here's what the output looks like:
"title": "Albums" "properties": "description": "Some great albums you should listen to." "entityCount": 1 "entities": "id": "chmzq50np0002gfixtr1qp64o" "name": "Settle" "artist": "Disclosure" "artistId": "chmzq4l480001gfixe8a3nzhm" "coverImage": "/covers/medium/zrms5gxr.jpg" "year": "2013" "genres": "electronic" "house" "garage" "UK garage" "future garage" "entityAttributes": "rel": "item" "class": "album" "links": "rel": "self" "href": "/albums"
Error messaging
404 and 401 error handling routes get hooked up for you for unsupported methods and urls.
Paging
Pass paging rules in on the options, and it will automatically create prev / next links that look like. Those links work automatically, too:
/resource?offset=20&limit=10
Credits
Copyright (c) Eric Elliott 2013
Written for the book, "Programming JavaScript Applications" (O'Reilly)