An opinionated, isomorphic HTTP client for Node.js, browsers, and React Native.
Usage
Import httpClient (Node.js, browsers, or React Native)
import {httpClient} from '@digitalbazaar/http-client';
Import and initialize a custom Bearer Token client
import {httpClient} from '@digitalbazaar/http-client'; const accessToken = '12345'; const headers = {Authorization: `Bearer ${accessToken}`}; const client = httpClient.extend({headers}); // subsequent http calls will include an 'Authorization: Bearer 12345' header
Disable self-signed TLS/SSL cert checks for development purposes only
import {Agent} from 'https'; import {httpClient} from '@digitalbazaar/http-client'; const agent = new https.Agent({rejectUnauthorized: false}); const client = httpClient.extend({headers, agent}); // subsequent http calls will use the provided https Agent
GET a JSON response in the browser
try { const response = await httpClient.get('http://httpbin.org/json'); return response.data; } catch(e) { // status is HTTP status code // data is JSON error from the server const {data, status} = e; throw e; }
GET a JSON response in Node with an HTTP Agent
import https from 'https'; // use an agent to avoid self-signed certificate errors const agent = new https.Agent({rejectUnauthorized: false}); try { const response = await httpClient.get('http://httpbin.org/json', {agent}); return response.data; } catch(e) { // status is HTTP status code // data is JSON error from the server if available const {data, status} = e; throw e; }
GET HTML by overriding default headers
const headers = {Accept: 'text/html'}; try { const response = await httpClient.get('http://httpbin.org/html', {headers}); // see: https://developer.mozilla.org/en-US/docs/Web/API/Response#methods return response.text(); } catch(e) { // status is HTTP status code // any message from the server can be parsed from the response if present const {response, status} = e; throw e; }
POST a JSON payload
try { const response = await httpClient.post('http://httpbin.org/json', { // `json` is the payload or body of the POST request json: {some: 'data'} }); return response.data; } catch(e) { // status is HTTP status code // data is JSON error from the server const {data, status} = e; throw e; }
POST a JSON payload in Node with an HTTP Agent
import https from 'https'; // use an agent to avoid self-signed certificate errors const agent = new https.Agent({rejectUnauthorized: false}); try { const response = await httpClient.post('http://httpbin.org/json', { agent, // `json` is the payload or body of the POST request json: {some: 'data'} }); return response.data; } catch(e) { // status is HTTP status code // data is JSON error from the server const {data, status} = e; throw e; }