lhcm
v0.0.4
Published
A simple http client for node.js and web browser
Downloads
19
Readme
Lightweight HTTP client
Overview
This module provides a flexible and convenient way to make HTTP requests in JavaScript or TypeScript applications. It includes methods for performing common HTTP operations such as GET, POST, PUT, PATCH, and DELETE requests. The module also supports interceptors, allowing you to modify request options before each request is sent.
Installation
This module can be used in both Node.js and browser environments. To install it, you can simply copy the provided code into your project or use a package manager like npm or yarn.
yarn add lhcm
[!NOTE]
lhcm
is defined asLightweight Http Client Module
Usage
Importing the Module
import HTTPClient from "lhcm";
Creating an Instance
To use the HTTPClient
class, create an instance with the base URL of the API you want to communicate with.
const client = new HTTPClient("https://api.example.com");
Making Requests
GET Request
const responseData = await client.get("/endpoint");
POST Request
const postData = { key: "value" };
const responseData = await client.post("/endpoint", postData);
PUT Request
const putData = { key: "updatedValue" };
const responseData = await client.put("/endpoint", putData);
PATCH Request
const patchData = { key: "updatedValue" };
const responseData = await client.patch("/endpoint", patchData);
DELETE Request
await client.delete("/endpoint");
Interceptors
Interceptors allow you to modify request options before each request is sent. You can use the use
method to add interceptors to the client.
import { Interceptor } from "./types";
const interceptor: Interceptor = (options) => {
// Modify options here
return options;
};
client.use(interceptor);
API Reference
Class: HTTPClient
Constructor
new HTTPClient(baseURL: string)
baseURL
: The base URL of the API.
Methods
use(interceptor: Interceptor): void
: Adds an interceptor to the client.get<T>(url: string, reqOptions?: RequestInit): Promise<T | void>
: Performs a GET request.post<T, P>(url: string, data: P, reqOptions?: RequestInit): Promise<T | void>
: Performs a POST request.put<T, P>(url: string, data: P, reqOptions?: RequestInit): Promise<T | void>
: Performs a PUT request.patch<T, P>(url: string, data: P, reqOptions?: RequestInit): Promise<T | void>
: Performs a PATCH request.delete<T>(url: string, reqOptions?: RequestInit): Promise<T | void>
: Performs a DELETE request.
Private Methods
request<T>(url: string, options: RequestInit): Promise<T | void>
: Sends an HTTP request with the provided options.applyInterceptors(options: RequestInit): RequestInit
: Applies interceptors to the request options.sendRequestWithBody<T, P>(method: string, url: string, data: P, reqOptions?: RequestInit): Promise<T | void>
: Sends an HTTP request with a request body.
Examples
Basic Usage
import HTTPClient from "./HTTPClient";
const client = new HTTPClient("https://api.example.com");
const responseData = await client.get("/data");
console.log(responseData);
Adding Interceptors
import HTTPClient, { Interceptor } from "./HTTPClient";
const client = new HTTPClient("https://api.example.com");
const loggingInterceptor: Interceptor = (options) => {
console.log("Request options:", options);
return options;
};
client.use(loggingInterceptor);
const responseData = await client.get("/data");
Note
[!WARNING] The module at this time only supports json responses. If your API cant response with another content type please don't use this module.
Compatibility
This module is compatible with both modern browsers and Node.js environments. However, it requires support for fetch
, so ensure your environment meets this requirement.