fetch-on-rest v2.0.4
Fetch-on-REST
Fetch-on-REST is a RESTful API wrapper built around window.fetch.
GitHub provides a polyfill for fetch to work on all browsers. Fetch is also available on react-native by default.
This wrapper is intended to work on both the browsers as well as with react-native.
Usage
Using Fetch-on-REST is as simple as passing the data and handling the JSON response. Headers are automatically set to accept JSON and the responses are json objects.
var Rest = require('fetch-on-rest');
var api = new Rest('/api/v2');
api.get('users', {name: 'foo'}).then(function(response) {});
// GET request on '/api/v2/users?name=foo'
api.post('posts', {title: 'foo', content: 'bar'}).then(function(response) {});
// POST request on '/api/v2/posts' with data {"title": "foo", "content": "bar"}
API
Initialization
new Rest(basePath="/", addOptions=function() {}, useTrailingSlashes=false):
basePath
: Is a string. Can be absolute or relative path.
addOptions(defaultOptions, url)
: Is an optional function. Can be used to modify the headers.
Should modify the received defaultOptions
object and not return a new object.
useTrailingSlashes:
Default false. By setting true, .get('users')
will hit the url /users/
.
Example of addOptions:
// Adding same-origin and X-CSRFToken token
function addOptions(defaults, url) {
defaults.credentials = 'same-origin';
if(defaults.method != 'get')
defaults.headers['X-CSRFToken'] = 'AUTHTOKENX';
}
var useTrailingSlashes = true;
var api = new Rest('/', addOptions, useTrailingSlashes);
Requests
.get(segments, query)
.post(segments, data, query)
.put(segments, data, query)
.patch(segments, data, query)
.del(segments, query)
.rawGet(segments, query)
All requests return a promise object.
The promise object resolves to JSON response (except rawGet
which resolves to text).
URL parsing is handled using the exhaustive URI.js library.
segments: segments
are the parts of url. Can be array or string.
query: query
is the search or GET params part of the url. Should be a key-value object.
data: data
is the json body to be sent in the request.
Changelog and Migration
Since version 2:
- the
delete
method has been renamed asdel
- have dropped the babel and ES2015 dependencies: this makes usage with React Native smoother
Contribution
Though we intend to keep the library minimalistic, we would love to see the pull-requests and discuss new issues.
Thanks for checking it out.
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago