sourcerer
v0.0.1
Published
Resource abstraction in vanilla JS, inspired by ngResource
Downloads
10
Readme
sourcerer
Resource abstraction in vanilla JS, inspired by ngResource. For browsers, Node and io.js.
Currently under development but the basic version of the examples shown below is already implemented.
Features
- Promise-based
- Simple resource route definition
- Only depends on superagent
- Pagination for resource collections
- [TODO] Optionally can return data as immutables
Install
As the package is not published yet, install it from the repo directly:
{
"dependencies": {
"sourcerer": "chute/sourcerer"
}
}
Usage
var Resource = require('sourcerer');
// define your resource
var Comment = new Resource('//api.example.com/posts/:post_id/comments');
// fetch list of post's comments
Comment.query({post_id: 1, sort: 'popular'}).then(function(assets) {
// ...
});
// GET //api.example.com/posts/1/comments?sort=popular
// fetch individual comment
Comment.find({post_id: 1, id: '1234'}).then(function(asset) {
// ...
});
// GET //api.example.com/posts/1/comments/1234
// create a new comment
Comment.create({text: 'My new world', author_id: 12, post_id: 1});
// POST //api.example.com/posts/1/comments
// {"text": "My new world", "author_id": 12}
// save a comment
var comment = new Comment({text: 'Comment', author_id: 12, post_id: 1});
comment.save();
// POST //api.example.com/posts/1/comments
// {"text": "Comment", "author_id": 12}
// update a comment
Comment.find({post_id: 1, id: '1234'}).then(function(comment) {
comment.text = 'Updated comment';
comment.save();
// PUT //api.example.com/comments/1234
// {"text": "Updated comment", "author_id": 12}
});
// delete a comment
comment.remove();
// DELETE //api.example.com/posts/1/comments/1234
Test
npm test