JSPM

  • Created
  • Published
  • Downloads 72549
  • Score
    100M100P100Q155547F
  • License ISC

Make a fetch request from a HAR definition

Package Exports

  • fetch-har
  • fetch-har/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fetch-har) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

fetch-har

Make a fetch request from a HAR definition.

CI License

Features

  • Supports Node 18+
  • Natively works in all browsers that support fetch without having to use any polyfils.
  • Tested across Chrome, Safari, Firefox on Mac, Windows, and Linux.
  • Requests can be mocked with fetch-mock or msw.

Installation

npm install --save fetch-har

Usage

import fetchHAR from 'fetch-har';
// const fetchHAR = require('fetch-har').default;

const har = {
  log: {
    entries: [
      {
        request: {
          headers: [
            {
              name: 'Authorization',
              value: 'Bearer api-key',
            },
            {
              name: 'Content-Type',
              value: 'application/json',
            },
          ],
          queryString: [
            { name: 'a', value: 1 },
            { name: 'b', value: 2 },
          ],
          postData: {
            mimeType: 'application/json',
            text: '{"id":8,"category":{"id":6,"name":"name"},"name":"name"}',
          },
          method: 'POST',
          url: 'http://httpbin.org/post',
        },
      },
    ],
  },
};

fetchHAR(har)
  .then(res => res.json())
  .then(console.log);

API

Options

userAgent

A custom User-Agent header to apply to your request. Please note that browsers have their own handling for these headers in fetch() calls so it may not work everywhere; it will always be sent in Node however.

await fetchHAR(har, { userAgent: 'my-client/1.0' });
files

An optional object map you can supply to use for multipart/form-data file uploads in leu of relying on if the HAR you have has data URLs. It supports Node file buffers and the File API.

await fetchHAR(har, { files: {
  'owlbert.png': await fs.readFile('./owlbert.png'),
  'file.txt': document.querySelector('#some-file-input').files[0],
} });

If you don't supply this option fetch-har will fallback to the data URL present within the supplied HAR. If no files option is present, and no data URL (via param.value) is present in the HAR, a fatal exception will be thrown.

init

This optional argument lets you supply any option that's available to supply to the Request constructor.

await fetchHAR(har, {
  init: {
    headers: new Headers({
      'x-custom-header': 'buster',
    }),
  },
})

❗ Note that if you supply body or credentials to this option they may be overridden by what your HAR requires.