@elara-services/fetch

The core lightweight HTTP client for Node

Usage no npm install needed!

<script type="module">
  import elaraServicesFetch from 'https://cdn.skypack.dev/@elara-services/fetch';
</script>

README

This is a rework of centra

The package was made smaller and reworked some stuff within the package. The main change is <res>.text(), <res>.json() not being async anymore.


The core lightweight HTTP client for Node


Install

npm i @elara-services/fetch

Getting Started

First, require the library.

const c = require("@elara-services/fetch")

Then let's make a request in an async function!

    const res = await fetch("https://example.com")
        .send();
    console.log(res.json())

More advanced usage

Send data in a JSON body

    fetch("https://example.com/nonexistentJSONAPI", "POST")
    .body({
        name: "Jim"
    }, "json")
    .send()
    .then((res) => {
        /*...*/
    })

Send data in a form body

    fetch("https://example.com/nonexistentJSONAPI", "POST")
    .body({
        name: "Kim"
    }, "form")
    .send()
    .then((res) => {
        /*...*/
    })

Set query string parameters

One at a time:

    fetch("https://example.com/user")
    .query("id", "9101467")
    .send()
    .then((res) => {
        /*...*/
    })

Many at a time:

    fetch("https://example.com/user")
    .query({
        id: "9101467",
        name: "Bob"
    })
    .send()
    .then((res) => {
        /*...*/
    })

Set a request timeout

    fetch("https://example.com")
    .timeout(2000)
    .send()
    .then((res) => {
        // Success!
    })
    .catch((err) => {
        // Has the request timed out?
    })

Stream a request's response

In this example, the stream is piped to a file:

    // require the fs module beforehand
    fetch("https://example.com/image.png")
    .stream()
    .send()
    .then((stream) => stream.pipe(fs.createWriteStream(path.join(__dirname, "logo.png"))))

Switch paths on the fly

    fetch("https://example.me/test")
    .path("/hello")
    .send()
    // This will make a request to https://example.com/test/hello

Specify request headers

One at a time:

    fetch("https://example.com")
    .header("Content-Type", "application/json")
    .send()

Many at a time:

    fetch("https://example.com")
    .header({
        "Content-Type": "application/json",
        "X-Connecting-With": "elara-bots/fetch"
    })
    .send()

Modify core HTTP request options

See http.request's options for more information about core HTTP request options. Let's change our localAddress as an example.

    fetch("https://example.com")
    .option("localAddress", "127.0.0.2")
    .send()

Accept compressed responses

    fetch("https://example.com")
    .compress()
    .send()
    // This will cause elara-bots/fetch to accept compressed content from the server. (gzip and deflate are currently supported)