@tim-code/json-fetch

0.6.0 • Public • Published

json-fetch

npm install @tim-code/json-fetch

A zero-dependency fetch wrapper for HTTP/HTTPS requests that should return well-formed JSON

Philosophy

import * as json from "@tim-code/json-fetch"
json.get(url, { queryParamKey: queryParamValue }, fetchOptions)
json.post(url, { postBodyKey: postBodyValue }, fetchOptions)
json.request(url, { ...fetchOptions, query: { a: "b" }, body: { c: "d" } })
// the following cause two requests each (i.e. `${url}?a=b` and `${url}?c=d`):
json.request(url, { ...fetchOptions, query: [{ a: "b" }, { c: "d" }] })
json.request(url, { ...fetchOptions, body: [{ a: "b" }, { c: "d" }] })

The functions exported will not throw errors on "abnormal" responses. Instead, abnormal responses are logged using console.error and an empty object {} is returned.

Abnormal responses are either:

  1. responses that do not have a successful status (i.e not in the range 200-299) or

  2. cannot be parsed as JSON (specifically JSON.parse threw an error).

Additionally, logged errors will include a portion of the response to help with debugging. See below on how to override this.

Options

In addition to the normal fetch options, the following are also optional:

fetch: a callback to be used instead of a global fetch; it is usually necessary to pass this in Node environments if a global.fetch is not set

onError: a callback that completely overrides error behavior; its return value will be passed back instead of an empty object assuming it didn't throw an error

raw: if set, does not attempt to parse JSON; will pass back a string instead of of JSON

query: query parameters

body: post body; if present, will cause a POST instead of a GET request to be made (and Content-Type header set)

Readme

Keywords

none

Package Sidebar

Install

npm i @tim-code/json-fetch

Weekly Downloads

2

Version

0.6.0

License

MIT

Unpacked Size

8.28 kB

Total Files

4

Last publish

Collaborators

  • timspro