Skip to content

readmeio/fetch-har

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 polyfills.
  • Tested across Chrome, Safari, Firefox on Mac, Windows, and Linux.
  • Requests can be mocked with HTTP mocking libraries like nock, msw, or fetch-mock.

Installation

npm install --save fetch-har 

Usage

import fetchHAR from 'fetch-har'; 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', }), }, });

Caution

If you supply body or credentials to this option they may be overridden by what your HAR requires.

About

Issues a fetch() request from a HAR file

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 8