@applitools/http-commons v3.0.2
http-commons
Library that has http common functionality, all around http-client currently.
Installing
npm install @applitools/http-commonsUsing the package
Let's see an example with fetchAsJson
const {fetchAsJson} = require('@applitools/http-commons')
await fetchAsJson('https://swapi.co/api/people/1/') // ===> {name: "Luke Skywalker", ...}API
All these functions with throw an exception if the status code is not 2xx. The excption will have the following properties:
code: it will be'ERR_X_STATUS_CODE_NOT_OK'status: the HTTP status codestatusText: the HTTP status textheaders: an object with the response headers
fetchAsBuffer(url, [fetchOptions], [options])
async fetches URL and returns a Buffer response.
url
The URL to fetch.
fetchOptions
The fetch options used by the node-fetch package.
options
The following options are available:
alternativeFetch
(For testing purposes) A function that will be used as an alternative to node-fetch-s fetch function.
returns
An object with the response body as JSON parsed.
Example
await fetchAsJson('https://swapi.co/api/people/1/') // ===> {name: "Luke Skywalker", ...}fetchAsText(url, [fetchOptions], [options])
async fetches URL and returns the response as a string.
url
The URL to fetch.
fetchOptions
The fetch options used by the node-fetch package.
options
The following options are available:
alternativeFetch
(For testing purposes) A function that will be used as an alternative to node-fetch-s fetch function.
returns
A string with the response body.
Example
await fetchAsText('https://www.wikipedia.org')) // ===> "<!DOCTYPE html><html ..."fetchAsTextWithJsonBody(url, json, [fetchOptions], [options])
async posts URL with a JSON body and returns the response as a string.
url
The URL to fetch.
fetchOptions
The fetch options used by the node-fetch package.
Note that the default options are {method: 'POST', body: '_the_json_'}, with the correct content-type header,
but you can override this using fetchOptions
options
The following options are available:
alternativeFetch
(For testing purposes) A function that will be used as an alternative to node-fetch-s fetch function.
returns
A string with the response body.
Example
await fetchAsTextWithJsonBody('https://httpbin.org/anything', {x: 4})) // ===> "{..{"x": 4}..}"fetchAsJsonWithJsonBody(url, json, [fetchOptions], [options])
async posts URL with a JSON body and returns the response as a string.
url
The URL to fetch.
fetchOptions
The fetch options used by the node-fetch package.
Note that the default options are {method: 'POST', body: '_the_json_'}, with the correct content-type header,
but you can override this using fetchOptions
options
The following options are available:
alternativeFetch
(For testing purposes) A function that will be used as an alternative to node-fetch-s fetch function.
returns
A "JSON" object with the parsed body
Example
await fetchAsTextWithJsonBody('https://httpbin.org/anything', {x: 4}, {method: 'PUT'})) // ===> {..{"x": 4}..}fetchAsBufferWithJsonBody(url, json, [fetchOptions], [options])
async posts URL with a JSON body and returns the response as a string.
url
The URL to fetch.
fetchOptions
The fetch options used by the node-fetch package.
Note that the default options are {method: 'POST', body: '_the_json_'}, with the correct content-type header,
but you can override this using fetchOptions
options
The following options are available:
alternativeFetch
(For testing purposes) A function that will be used as an alternative to node-fetch-s fetch function.
returns
A buffer with the response body.
Example
await fetchAsBufferWithJsonBody('https://httpbin.org/anything', {x: 4})) // ===> Buffer (....)retryFetch(func, options)
Retries code and deals correctly with retrying HTTP and connection errors.
func
An async func that calls one of the fetch* functions above or the fetch in node-fetch directly.
options
retries
Number of retries before failing.
sleepTime
The time (in ms) for sleeping between retries
backoff
Exponential backoff factor for sleepTime
idempotent
Some errors, like 5xx http status error should not retry if the fetch operation is idempotent. So this
flag says whether the operation is idempotent to know whether to retry.
returns
Whatever func returns
Example
const json = await retry(() => fetchAsJson('http://httpbin.org/anything'), {idempotent: true})1 year ago
12 months ago
2 years ago
3 years ago
4 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago