Library that has http common functionality, all around http-client currently.
npm install @applitools/http-commons
Let's see an example with fetchAsJson
const {fetchAsJson} = require('@applitools/http-commons')
await fetchAsJson('https://swapi.co/api/people/1/') // ===> {name: "Luke Skywalker", ...}
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 code -
statusText
: the HTTP status text -
headers
: an object with the response headers
async fetches URL and returns a Buffer response.
The URL to fetch.
The fetch options used by the node-fetch
package.
The following options are available:
(For testing purposes) A function that will be used as an alternative to node-fetch
-s fetch
function.
An object with the response body as JSON parsed.
await fetchAsJson('https://swapi.co/api/people/1/') // ===> {name: "Luke Skywalker", ...}
async fetches URL and returns the response as a string.
The URL to fetch.
The fetch options used by the node-fetch
package.
The following options are available:
(For testing purposes) A function that will be used as an alternative to node-fetch
-s fetch
function.
A string with the response body.
await fetchAsText('https://www.wikipedia.org')) // ===> "<!DOCTYPE html><html ..."
async posts URL with a JSON body and returns the response as a string.
The URL to fetch.
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
The following options are available:
(For testing purposes) A function that will be used as an alternative to node-fetch
-s fetch
function.
A string with the response body.
await fetchAsTextWithJsonBody('https://httpbin.org/anything', {x: 4})) // ===> "{..{"x": 4}..}"
async posts URL with a JSON body and returns the response as a string.
The URL to fetch.
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
The following options are available:
(For testing purposes) A function that will be used as an alternative to node-fetch
-s fetch
function.
A "JSON" object with the parsed body
await fetchAsTextWithJsonBody('https://httpbin.org/anything', {x: 4}, {method: 'PUT'})) // ===> {..{"x": 4}..}
async posts URL with a JSON body and returns the response as a string.
The URL to fetch.
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
The following options are available:
(For testing purposes) A function that will be used as an alternative to node-fetch
-s fetch
function.
A buffer with the response body.
await fetchAsBufferWithJsonBody('https://httpbin.org/anything', {x: 4})) // ===> Buffer (....)
Retries code and deals correctly with retrying HTTP and connection errors.
An async func that calls one of the fetch*
functions above or the fetch
in node-fetch
directly.
Number of retries before failing.
The time (in ms) for sleeping between retries
Exponential backoff factor for sleepTime
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.
Whatever func
returns
const json = await retry(() => fetchAsJson('http://httpbin.org/anything'), {idempotent: true})