npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-rest-kit

v0.0.6

Published

A React Native RESTful API kit that use the fetch method

Downloads

5

Readme

React-native-rest-kit

As react native does not support Node.js HTTP module, I create this simple experiemental rest kit using the built in "fetch" method.

  • The purpose of this kit is to build a backbone-like model structure. So that you can simply call "save", "update", "fetch" method on each model.
  • Add an extra layer of the fetch method to check if the status API returns is not 200. Returns an json file instead of response object.

To do:

  • Implement "collection"
  • Implement event listeners
  1. Setup
  2. RestKit.Model
  3. AsyncStorage
  4. RestKit.send()

Install

RestKit requires underscore.

The easiest way to install: npm install react-native-rest-kit

And require it in your React Native app: var RestKit = require('react-native-rest-kit);

RestKit.Model

RestKit.Model is brought from backbone. It is used almost the same as Backbone.Model, but only part of the functions are implemented.

Create a model class

var Car = RestKit.Model.extend({
	rootUrl = "http://www.your-domain.com/car"
	//More options to be added
});

rootUrl: the root url where this model connects to.

  • value: String or function. If its a function it should return a string.

Create an instance

var car = new Car({
	"make": "BMW",
	"model": "428i",
	"year": 2014
})

You can create a model using the new keyword. You can pass an object as the initial value of the model, you can also create an empty model.

Model methods:

set():
people.set('mpg', '23')

this will set the atrribute mpg to 23.

  • If the attribute does not exist, this attribute will be added to the model.
  • If the attribute does exist, the value will be replaced.

You can also pass a json object as the argument:

people.set({
	"mpg": 23,
	"color": "white"
})
unset():
people.unset('mpg', '23')

The attribute "mpg" will be deleted

  • Unset does not take json object or array as argument.
isNew():
people.isNew();

This will return ture if "id" attribute does not exist

save():
var option = {
	headers:{
		"Authentiacation":"Bearer SOME_TOKEN"
	}
}

people.save(option, function(error){
    if(error) console.log(error);
    console.log(people);
});

Save this model to the server, this is POST for new model and PUT for existing model

  • option: (optional) ** option.headers: the headers to be added to the HTTP request
fetch():
people = new People({
	id: 1
});

people.fetch(function(error){
    if(error) console.log(error);
    console.log(people);
});

Fetch this model from the server, this is GET request

  • To fetch an model, ID has to be set.
  • option: (optional) ** option.headers: the headers to be added to the HTTP request
delete():
people.delete(option, function(error){
    if(error) console.log(error);
});

Delete this model to the server, this is DELETE method

  • To delete an model, ID has to be set.
  • option: (optional) ** option.headers: the headers to be added to the HTTP request

RestKit.globalOption

RestKit.globalOption.headers
RestKit.globalOption.headers:{
	"Authentiacation":"Bearer SOME_TOKEN"
}

The headers to be included in every request.

Local Storage

RestKit take advantage of AsycnStorage of React Native to allow you to store an instance of a model (or collection) to the local storage of your device, and conveniently retrieve it.

Model.saveToLocalStorage(unique_key, callback)

var car = new Car({"make":"bmw"});
car.saveToLocalStorage("default_car", function(error){
	if(!error) console.log('saved');
});

Model.getFromLocalStorage(unique_key, callback)

var car = new Car();
car.getFromLocalStorage("default_car", function(error){
	if(!error) console.log(car);
});

RestKit.send()

Send simple HTTP request This is based on the React Native fetch method. It has a simple error checking to check if the response status is not between 200-208 or 226. The returned object is a json instead of a response object

//Set up request object
var request = {
    method: 'post',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        "app":"FM Business",
        "platform":"iOS"
    })
}

var url = 'https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA';

RestKit.send(url, request, function(error, json){
                if(error)
                    console.log("encoutered error: ", error);
                console.log(json);
            });

request object: the same object used for fetch()