1.9.0 • Published 2 years ago

@tdcerhverv/api-connector v1.9.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

API utils for a React world 🚀

Installation

npm i @tdcerhverv/api-connector

Looking for docs to version 0.x

0.x docs

Getting started

First off, a request object has to follow this format

NameTypeDefault valueDescription
endpointstringrequiredEndpoint, fx: /bc/matrix/discountmatrix
hoststringnullAPI host, fx: https://odinapi.tdc.dk
methodstringGETMethod (GET, POST, PUT, DELETE)
headersobject{}Object with headers
paramsobject{}Object with query parameters
modestring'cors'Set the mode for CORS, see specification. *
bodyobject | stringnullObject or string with body (obj will be stringified)
timeoutnumber10Seconds before timing out the request
mockResultanynullMock a result (OBS: Request won't be called with this on)
mockErroranynullMock an error (OBS: Request won't be called with this on)
mockDelaynumber0Delay any mock with x ms
cacheBustboolfalseAppends a query parameter with timestamp: ?_=14301301031
cacheKeystringnullCache the result in memory for a unique key
onErrorfunctionnullError handler (request, error) => useful for global error handling
onCacheSavefunctionnullA handler called with (request, result) => for you to save
onCacheLoadfunctionnullA handler with (request) => return any value as the response
cleanboolfalseIf true, no defaults will be included
retryAttemptsnumber0Number of times it should retry, before throwing the error

* = credentials will be include if mode is cors or same-origin

In case you don't want to write host or some headers each time, you can set up some defaults.

// Somewhere in index.js or App.js fx
import { setRequestDefaults } from '@tdcerhverv/api-connector';

setRequestDefaults({
  host: 'https://odinapi.tdc.dk',
  headers: {
    'Content-Type': 'application/json; charset=utf-8',
  },
});

Use with hooks: useRequest

The simplest way to "hook" this up 🥁, is with the useRequest hook.

useRequest: (requestFunc, deps?) => result

requestFunc: () => Promise A function that returns a request promise. () => request({...})

deps?: any[] An array of values that when one of those values change, the requests will get called again.

response error, responseBody, loading, rawResponse The result from the request

import { useRequest, request } from '@tdcerhverv/api-connector';

export default function SomeComp() {
  const [error, response, loading, rawResponse] = useRequest(() =>
    request({
      endpoint: '/bc/p/discountmatrix',
    })
  );

  // render stuff!
}

Examples Hooks

Programatically request

import { request } from '@tdcerhverv/api-connector';

request({
  endpoint: '/bc/p/discountmatrix',
}).then((response) => {
  console.log(response);
});

// Using async/await 💪
const [err, response] = await request({
  endpoint: '/bc/p/discountmatrix',
  method: 'POST',
});

Misc

Other examples

1.9.0

2 years ago

1.8.0

3 years ago

1.7.0

4 years ago

1.6.0

4 years ago

1.5.2

5 years ago