@technomoron/api-client-base
v1.0.31
Published
Client library for api-server-base
Readme
API Client Base
Client library for talking to api-server-base based APIs.
Features
- Simplifies API interactions with
GET,POST,PUT, andDELETEmethods. - Manages authentication tokens seamlessly, including token refresh.
Installation
To use this package, install it via npm or yarn:
npm|pnpm|yarn install @technomoron/api-client-baseUsage
Import and Initialize
import ApiClient from '@technomoron/api-client-base';
const API_BASE_URL = 'https://api.example.com';
const client = new ApiClient(API_BASE_URL);
const clientWithKey = new ApiClient(API_BASE_URL, { apiKey: 'apikey' });Public Methods
login(username: string, password: string, domain: string, fingerprint: string): Promise<{ accessToken: string; refreshToken: string; user: SafeUser }>
Authenticates the user and retrieves an access token, refresh token, and user payload.
await client.login('username', 'password', 'example.com', 'unique-fingerprint');get<T>(command: string): Promise<T>
Performs a GET request to the specified API endpoint.
const data = await client.get('/api/v1/resource');post<T>(command: string, body: any): Promise<T>
Performs a POST request to the specified API endpoint with a request body.
const response = await client.post('/api/v1/resource', { key: 'value' });put<T>(command: string, body: any): Promise<T>
Performs a PUT request to the specified API endpoint with a request body.
await client.put('/api/v1/resource/1', { key: 'updatedValue' });delete<T>(command: string, body?: any): Promise<T>
Performs a DELETE request to the specified API endpoint. Optionally, you can include a request body.
await client.delete('/api/v1/resource/1');Authentication Management
The ApiClient class handles token-based authentication:
- Automatically attaches the
Authorizationheader with the Bearer token for authenticated requests. - Refreshes the access token when it expires using the stored refresh token.
Example
import apiClient from '@technomoron/api-client-base';
const API_BASE_URL = 'https://api.example.com';
(async () => {
const client = new apiClient(API_BASE_URL);
const login = await client.login('user', 'password', 'example.com', 'unique-fingerprint');
if (!login.isSuccess()) {
throw Error(`Unable to log in: ${login.message} (${login.code})`);
}
const categories = await client.get('/api/v1/categories');
if (categories.isSuccess()) {
console.log(JSON.stringify(categories.data, undefined, 2));
}
})();License
MIT - Copyright (c) 2025 Bjørn Erik Jacobsen
