Licence
MIT
Version
0.0.1
Deps
2
Vulns
1
Weekly
0
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