Package -

Akadenia API

An opinionated wrapper around axios library

Installation

npm install @akadenia/api --save

Import the Axios Client

import { AxiosApiClient } from '@akadenia/api'

Instantiate the Axios Client

const headers = {
    "Content-Type": "application/json"
}
const client = new AxiosApiClient('https://baseurl', headers)

Making a GET request

type User = {
    id: number
    firstname: string
    lastname: string
}

const response = await client.get<User>("/users/1")
if (response.success) {
    console.log(response.data.firstname)
    console.log(response.data.lastname)
} else {
    console.log(response.error)
}

Making a POST request

type User = {
    id: number
    firstname: string
    lastname: string
}

const payload = {
    firstname: "John",
    lastname: "Doe"
}
const response = await client.post<User>("/users", payload)
if (response.success) {
    console.log(response.data)
} else {
    console.log(response.error)
}

console.log(response.message)

Making a PUT request

const payload = {
    firstname: "Lisa",
    lastname: "Smith"
}
const response = await client.put("/users/1", payload)
if (response.success) {
    console.log(response.data)
} else {
    console.log(response.error)
}

console.log(response.message)

Making a DELETE request

const response = await client.delete("/users/1")

if (response.success) {
    console.log(response.message)
} else {
    console.log(response.error)
}

Default response structure

   {
    success: false
    message: string
    data?: any
    error: any
  }

Configuring Retry Logic

The AxiosApiClient supports configurable retry logic for failed requests based on the axios-retry library. You can customize the retry behavior when instantiating the client:

const client = new AxiosApiClient({
    baseUrl: 'https://baseurl',
    retries: 3, // Number of retries
    retryDelay: (retryCount) => retryCount * 1000, // Wait 1 second on first retry, 2 seconds on second retry, etc.
    onRetry: (retryCount, error) => {
        console.log(`Retry attempt ${retryCount} for error: ${error.message}`);
    } // Callback function to be called on retry
});

License

MIT

More packages

Akadenia Azure Storage

A wrapper around Azure Storage SDK to make it easier to use

View package

Akadenia Helpers

A collection of Text, Map, Date helpers and more

View package