# micro-api-client

> Micro REST API client

Latest version **3.3.0** (published 2018-09-11) · ISC license · 0 weekly downloads

## Install

```sh
npm install micro-api-client
pnpm add micro-api-client
yarn add micro-api-client
bun add micro-api-client
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.3.0 |
| Published | 2018-09-11 |
| First published | 2016-10-21 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 14.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 28 |
| Author | Mathias Biilmann Christensen |
| Maintainers | benaiah, biilmann, bret, brycekahle, calavera, calavera-netlify, davidwells, erquhart, imorente, lunathecat |
| Keywords | api, fetch, netlify |

## Links

- npm: https://www.npmjs.com/package/micro-api-client
- Repository: https://github.com/netlify/micro-api-client
- Issues: https://github.com/netlify/micro-api-client/issues
- npm.io page: https://npm.io/package/micro-api-client

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 3.3.0 (latest) — 2018-09-11
- 3.2.3 — 2018-07-24
- 3.2.2 — 2018-01-15
- 3.2.1 — 2018-01-11
- 3.2.0 — 2017-10-05
- 3.1.0 — 2017-10-02
- 3.0.3 — 2017-09-07
- 3.0.2 — 2017-09-05
- 3.0.1 — 2017-09-05
- 3.0.0 — 2017-09-05
- 2.0.0 — 2016-12-29
- 1.1.1 — 2016-11-21
- 1.1.0 — 2016-11-21
- 1.0.0 — 2016-10-21

## README

# micro-api-client

[![Build Status](https://travis-ci.org/netlify/micro-api-client.svg?branch=master)](https://travis-ci.org/netlify/micro-api-client)

Small library for talking to micro REST APIs (not related to Netlify's main API).

## Installation

```
yarn add micro-api-client
```

## Usage

```js
import API, { getPagination } from 'micro-api-client'

const api = new API("/some/api/endpoint");
api
  .request("foo")
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

### API

### `api = new API(apiURL, [opts])`

Create a new `micro-api-client` instance. `apiURL` can be a full or relative URL. Optional `opts` include:

```js
{
  defaultHeaders: {
  } // header values to include in every request.
}
```

### `api.request(path, [opts])`

Make a request to the `apiURL` at the given `path`. Optional `opts` are passed to the [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) API:

```js
// Default options
{
  headers: {} // Optional headers object.  Overrides defaultHeaders
  credentials: "same-origin" // set fetch credentials option
  "Content-Type": "application/json" // set Content-Type fetch option
}
```

Returns a promise with the `response`. If the `contentType` is JSON, it will be checked for pagination and return either the parsed JSON object or a paginated JSON object:

```js
// See src/pagination.js
{
  pagination: {
    last,
    next,
    prev,
    first,
    current,
    total
  },
  items: json
}
```

If an error occurs during the request, the promise may be rejected with an `HTTPError`, `TextHTTPError`, or `JSONHTTPError`.

### `class HTTPError extends Error`

Additional error properties from Error

```js
{
  stack, // stack trace of error
  status // status code of response
}
```

### `class TextHTTPError extends HTTPError`

Additional error properties from HTTPError

```js
{
  data // data of text response
}
```

### `class JSONHTTPError extends HTTPError`

Additional error properties from HTTPError

```js
{
  json // json of a JSON response
}
```

### `pagination = getPagination(response)`

Returns a pagination object that `micro-api-client` uses internally.

---
_Source: https://npm.io/package/micro-api-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
