Skip to content

digitalcredentials/http-client

This branch is 1 commit ahead of, 18 commits behind digitalbazaar/http-client:main.

Folders and files

NameName
Last commit message
Last commit date
Sep 12, 2023
Sep 12, 2023
Apr 29, 2023
May 3, 2022
Jun 18, 2020
Jan 25, 2024
Jun 18, 2020
Jan 25, 2024
Apr 29, 2023
Jan 25, 2024
Jan 17, 2023

Repository files navigation

http-client

An opinionated, isomorphic HTTP client for Node.js, browsers, and React Native.

Usage

Import httpClient (Node.js)

import https from 'https';
import {httpClient} from '@digitalbazaar/http-client';

Import httpClient (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 httpsAgent = new https.Agent({rejectUnauthorized: false});

const accessToken = '12345';
const headers = {Authorization: `Bearer ${accessToken}`};

const client = httpClient.extend({headers, httpsAgent});

// subsequent http calls will include an 'Authorization: Bearer 12345' header,
// and use the provided httpsAgent

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;
}

About

An opinionated, isomorphic HTTP client.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.0%
  • Shell 2.0%