npm.io
2.0.3 • Published 1 year ago

@elara-services/fetch

Licence
ISC
Version
2.0.3
Deps
1
Size
216 kB
Vulns
0
Weekly
0
Stars
4

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)

Keywords