Namespace: Http

mindsmine.Http

This class enhances the Fetch API by rejecting on HTTP error status, even for an HTTP 404 or 500.

The Fetch API provides an interface for fetching resources (including across the network). It will seem familiar to anyone who has used XMLHttpRequest, but the new API provides a more powerful and flexible feature set.

Problem with Fetch API: The Promise returned from fetch() will not reject on HTTP error status even if the response is an HTTP 404 or 500. Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure or if anything prevented the request from completing.

Since:
  • 4.7.0

Methods

(static) poll(fn, validateFn, intervalopt, maxAttemptsopt) → {Promise}

Polling function inspired from Polling in JavaScript blog post.

The function is a higher-order function that returns a function, executePoll. The executePoll function returns a promise and will run recursively until a stopping condition is met.

Example Usage:

   mindsmine.Http.poll(
      () => {
         // Function to be polled
      },

      (result) => {
         // Function that validates the result of the above function
      }
   ).then((result) => {

      // Do something with the result

   }).catch((response) => {

      console.error(`HTTP error code = ${response.status}`);
      console.error(`HTTP error code = ${response.body.message}`);

   });
Parameters:
Name Type Attributes Default Description
fn function

The function to be polled.

validateFn function

The function that validates the result.

interval Number <optional>
10000

The interval (in milliseconds) in between polling the function.

maxAttempts Number <optional>
6

The maximum times the function should be polled.

Since:
  • 4.8.0
Throws:

If invalid arguments.

Type
TypeError
Returns:

The promise that rejects to the Response object with a body of Error object.

Type
Promise

(static) request(url, optionsopt) → {Promise}

Sends an HTTP request to a remote server and returns a Promise object. This function enhances the global fetch function by rejecting on HTTP error status, even for an HTTP 404 or 500.

The promise resolves to the Response object representing the response to the request.

Problem with fetch function: A fetch() promise only rejects when a network error is encountered (which is usually when there is a permissions issue or similar). A fetch() promise does not reject on HTTP errors (404, etc.). Instead, a then() handler must check the Response.ok and/or Response.status properties.

Example Usage:

   mindsmine.Http.request(
      "valid URI",
      {
         headers: {
            "Accept" : "some value",
            "Content-Type" : "some value",
            "Authorization" : "some value"
         }
      }

   ).then((response) => {

      console.log(`HTTP status code = ${response.status}`);

      response.json().then(data => {
         console.log(data);
      });

   }).catch((response) => {

      console.log(`HTTP error code = ${response.status}`);

   }).finally(() => {

      console.log("This function is called regardless of success or failure.");

   });
Parameters:
Name Type Attributes Description
url String

The URL to which to send the request.

options Object <optional>

An object containing any custom settings to apply to the request. The possible options are:

Properties
Name Type Attributes Default Description
method String <optional>
"GET"

The request method to use. Supported values: GET, HEAD, POST, PUT, PATCH, DELETE.

headers Object <optional>

Any headers to add to the request, contained within an object literal with String values. Note that some names are forbidden.

jsonData Object <optional>

JSON data to add to the request body. Note that a request using the GET or HEAD method cannot have a body.

mode String <optional>

The mode to use for the request, e.g., cors, no-cors, same-origin, navigate, etc.

credentials String <optional>
"same-origin"

Controls what browsers do with credentials (cookies, HTTP authentication entries, and TLS client certificates). Must be one of the following strings: omit, same-origin or include.

beforeRequest function <optional>

The function to be called before a network request is made.

Since:
  • 4.7.0
Throws:

If invalid arguments.

Type
TypeError
Returns:

The promise that resolves to the Response object representing the response to the request.

Type
Promise