@elara-services/fetch
v2.0.2
Published
The package was made smaller and reworked some stuff within the package. The main change is `<res>.text()`, `<res>.json()` not being async anymore.
Downloads
724
Maintainers
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 { fetch } = 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)