2.0.2 • Published 9 months ago

@elara-services/fetch v2.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

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)