requests
Introducing requests, an incredibly lightweight (1.2kb) and powerful HTTP client for Node.js, built on top of the Fetch API.
Motivation
Driven by the limitations of existing JavaScript HTTP libraries, I developed requests
with inspiration from the versatile Python requests
library. My goal was to create a user-friendly and flexible solution for working with HTTP requests
in JavaScript, filling the gaps left by other alternatives.
Installation
npm
npm install requestly
yarn
yarn add requestly
pnpm
pnpm add requestly
Usage
To use requestly
, follow the steps below:
1. Import the library
import { requests } from "requestly";
2. Create an HTTP Client
Creating a custom client allows you to set a base URL, default headers, manage cookies, and intercept requests/responses. By default, cookies are persisted.
const client = requests.client({
baseUrl: "https://jsonplaceholder.typicode.com",
userAgent: "Custom User-Agent",
headers: {
"Custom-Header": "CustomHeaderValue",
},
cookies: {
"Custom-Cookie": "CustomCookieValue",
},
persistCookies: true,
interceptors: {
onRequest: (url, init) => {
},
onResponse: (url, init, response) => {
},
},
});
3. Make a GET request
const response = await client.get("/todos/1");
console.log(response.data);
Features
Automatically save cookies from responses
By default, cookies are persisted. You can change this behavior by setting the persistCookies
option when creating a client.
const client = requests.client({
baseUrl: "https://jsonplaceholder.typicode.com",
persistCookies: false,
});
Intercepting requests and responses
You can intercept requests and responses to modify them before they are sent or after they are received.
const client = requests.client({
baseUrl: "https://jsonplaceholder.typicode.com",
interceptors: {
onRequest: (url, init) => {
return { ...init, headers: { ...init.headers, foo: "bar" } };
},
onResponse: (url, init, response) => {
},
},
});
Modify default headers and cookies
Easily modify the default headers and cookies for your client.
client.headers.set("foo", "bar");
client.cookies.set("foo", "bar");
Make POST, PUT, DELETE, and PATCH requests
const postResponse = await client.post("/todos", {
body: { title: "New todo", completed: false },
});
const putResponse = await client.put("/todos/1", {
body: { title: "Updated todo", completed: true },
});
const deleteResponse = await client.delete("/todos/1");
const patchResponse = await client.patch("/todos/1", {
body: { title: "Patched todo" },
});