api-fetch-wrapper

1.0.3 • Public • Published

api-fetch-wrapper

This is a small wrapper to handle custom responses from your server. The package automatically adds an auth header to all your requests - it fetches the auth token from Async Storage (It's not secure. I recommend using rn-secure-storage). If the token is expired, it can send a refrsh request and then re-send the original request. You can also define your own functions based on the server's response.

Example scenario

Every time you get EXPIRED_TOKEN, you want to send a refresh_token request, and then re-send the original request - but not more than 3 times.

Installation

npm install api-fetch-wrapper

Usage

import Fetch from "api-fetch-wrapper"

const handleInvalidToken = json => {
	// do something
}

const storeFunction = async (key, value = "") => {
	/* the library sends the keys you define in params */
	if (value == "") {
		// get value
		return await AsyncStorage.getItem(value)
	}
	// set value
	return await AsyncStorage.setItem(key, value)
}

const fetchService = new Fetch(
	"https://example.com",
	{
		// params: the params the server expects / returns, and the keys to send to storeFunction
		auth_token: "auth_token", // auth token param in server response
		refresh_token: "refresh_token", // POST param for refreshing token
		error: "message" // if an error occurs, what's the name of the param the server returns? {"message": "ERROR MESSAGE"}
	},
	storeFunction, // function to handle get / set tokens
	{
		EXPIRED_TOKEN: "_handleExpiredToken", // built in in class
		INVALID_TOKEN: handleInvalidToken
	},
	2, // maximum requests to be sent
	"login/refresh_token" // refresh token endpoint
)

try {
	const resp = await fetchService.fetch("/endpoint", {
		method: "POST",
		body: {
			param: "hello world"
		}
	})

	// resp.json and resp.status
} catch (error) {
	// error.message is either an error from your server (if you defined params.error)
	// or a default error
}

Readme

Keywords

Package Sidebar

Install

npm i api-fetch-wrapper

Weekly Downloads

3

Version

1.0.3

License

ISC

Unpacked Size

6.83 kB

Total Files

4

Last publish

Collaborators

  • adamgold7