UNPKG

torc-api

Version:

torc-api is a lightweight wrapper to simplify HTTP requests

98 lines (65 loc) 2.96 kB
# torc-api `torc-api` is a lightweight wrapper to simplify HTTP requests, similar to `axios`, but with a more explicit and strongly-typed approach. It includes two main classes: `API` for handling HTTP requests, and `Data` for structuring responses or payloads. --- ## 🚀 Installation ```bash npm install torc-api ``` --- ## 📦 Basic Example ### Fetch data with automatic JSON formatting This is equivalent to calling `response.json()` manually: ```ts import { API, Data } from 'torc-api' const pokeApi = new API({ url: 'https://pokeapi.co/api/v2/pokemon' }) async function fetchPokemon(pokemonName: string): Promise<Data<string>> { const data = await pokeApi.get<string>({ endpoint: pokemonName, formatToJSON: true }) return data } fetchPokemon('ditto').then(data => console.log('data:', data)) ``` ### Get the raw Response object If you set `formatToJSON` to `false` (which is the default), you'll receive the raw `Response` instead of a `Data` object: ```ts async function fetchPokemon(pokemonName: string): Promise<Response> { const response = await pokeApi.get({ endpoint: pokemonName, formatToJSON: false }) return response } ``` --- ## 🔧 API: Configuration When creating an API instance, you can provide: | Property | Type | Required | Description | | -------- | ------------ | -------- | -------------------------------- | | url | `string` | | Base URL for all requests | | headers | `HeadersInit`| | Default headers for all requests (can be overridden per call) | | options | `APIOptions` | | Default options for all requests | --- ## 📄 APIOptions `APIOptions` extends the native `RequestInit` object and adds: | Property | Type | Default | Description | | ------------ | -------- | ------- | ----------------------------------------- | | formatToJSON | `boolean`| `false` | Whether to automatically call `.json()` on the response | | abortSeconds | `number` | `20` | Time (in seconds) before the request is automatically aborted | --- ## 📦 Data The `Data<T>` class wraps a response value and potential error in a unified structure: ### Properties | Property | Type | Description | | -------- | -------------- | ------------------- | | value | `DataValue<T>` | The response data | | error | `DataError` | The error (if any) | ### Static Methods | Method | Returns | Description | | -----------------------------| ------------ | ------------------------------------- | | `Data.failure(error: DataError)` | `Data<null>` | Creates a `Data` instance with a given error | | `Data.success<T>(value: T)` | `Data<T>` | Creates a `Data` instance with a given value | ---