A library for handling API and HTTP errors with ease.
- Framework agnostic
- Fully typed
- i18n support
- Built-in adapters for popular fetching libraries (axios, ofetch etc.)
- Customizable. Set up your own error kinds and validation-error formats
npm install @alexovn/okapi
⚠️ Fetching data libraries likeAxiosorofetchshould be installed separately.
Use an adapter mapper to turn a library-specific error into a consistent object for your UI:
import axios from 'axios'
import { createAxiosErrorMapper } from '@alexovn/okapi/axios'
import { notify } from './notificationService' // your notification service
const mapAxiosError = createAxiosErrorMapper({
i18n: {
titles: {
'not-found': 'Not found',
network: 'Connection problem',
},
statusTitles: {
503: 'Temporarily unavailable',
},
messages: {
'not-found': 'The requested resource was not found.',
network: 'Check your internet connection and try again.',
},
statusMessages: {
503: 'The service is temporarily unavailable. Please try again later.',
},
},
})
async function saveProfile() {
try {
const response = await axios.post('/api/profile', {
email: 'invalid',
})
return response.data
} catch (error) {
const mappedError = mapAxiosError(error)
notify({
title: mappedError.title,
message: mappedError.message
})
}
}Take a look at Okapi documentation. There you can find all necessary information about library usage with comprehensive examples.
- Clone this repository
- Enable Corepack using
corepack enable - Install dependencies using
pnpm install
This library was inspired by article "API Error Handling Demystified: Don’t Just Fetch — Handle in JS & TS" by Tanguy Fabien.
Made with ❤️
Published under the MIT license.
