AxiosFlow: Automate Type-Safe API Calls and Supercharge Your TypeScript Workflow
Say goodbye to repetitive, error-prone API code. AxiosFlow automatically generates type-safe API functions, saving you time and ensuring compile-time
As a TypeScript developer, have you ever felt frustrated writing repetitive, error-prone API calls? Do you wish there were a way to automate type-safe API interactions without sacrificing flexibility? Meet AxiosFlow, a powerful TypeScript library that revolutionizes your interactions with APIs.
In this post, I'll show you how AxiosFlow can save you hours of development time, reduce boilerplate code, and ensure compile-time type safety for your API calls.
What is AxiosFlow?
AxiosFlow is a TypeScript library that automatically generates type-safe API functions for your RESTful APIs. It works seamlessly with Express.js and Axios, eliminating the need for manual type definitions and repetitive API call functions.
Key Features:
Automatic API Function Generation: Say goodbye to writing repetitive API call functions.
Compile-Time Type Safety: Catch type mismatches before runtime.
Dynamic URL Parameter Support: Easily handle dynamic routes like
/users/:id
.Minimal Configuration: Works out of the box with your existing Express.js backend.
Why Use AxiosFlow?
1. Eliminate Boilerplate Code
Writing API call functions manually is time-consuming and error-prone. With AxiosFlow, you can generate fully typed API functions with just a few lines of code.
2. Ensure Type Safety
AxiosFlow ensures that your API calls are type-safe at compile time. This means fewer runtime errors and more reliable code.
3. Seamless Integration
AxiosFlow integrates perfectly with Express.js and Axios, so you don’t need to learn a new framework or rewrite your existing code.
How AxiosFlow Works
Step 1: Define Your API Routes
Define your API routes and controllers in Express.js:
// src/controllers/userController.ts
import { Request, Response } from 'express';
export class UserController {
private users = [ { id: 1, name: 'John Doe' },
{ id: 2, name: 'Jane Doe' }, ];
getUsers(req: Request, res: Response) { res.status(200).json({ data: this.users }); } }
Step 2: Register Routes with AxiosFlow
Use AxiosFlow to register your routes and generate type-safe API functions:
// src/routes/userRoutes.ts
import { registerRoute } from 'axiosflow-api';
import { UserController } from '../controllers/userController';
const userController = new UserController();
export function registerUserRoutes() { registerRoute( userController, 'GET', '/users', null, { id: 'number', name: 'string' }, [], 'getUsers' ); }
Step 3: Generate Type-Safe API Functions
Run the AxiosFlow CLI to generate type-safe API functions:
npx axiosflow generate
This will generate the following files in src/services/
:
apiFunctions.ts
: Type-safe API functions.types.ts
: Type definitions for your API.api-schema.json
: API schema documentation.
Step 4: Use the Generated Functions
Now, you can use the generated functions in your application to make API calls. These functions are type-safe, ensuring your requests and responses match the expected types. This helps prevent errors and makes your code more reliable.
Use the generated functions in your frontend:
import { get_users } from './services/apiFunctions';
async function fetchUsers() { try { const users = await get_users(); console.log(users); // Fully typed response! } catch (error) { console.error(error); } }
Explore the documentation and check out the live examples and the NPM Library.