Fluent Axios-based API request builder for React, Express, and NestJS
npm install @agadajerry/api-request-builderA fluent, Axios-based API request builder that works seamlessly in:
- ReactJS
- ExpressJS
- NestJS
- etc
Built using the Builder Pattern to make HTTP requests clean, readable, and reusable.
---
- Fluent builder pattern
- Axios under the hood
- Works in browser & Node.js
- Supports headers, query params, body, timeout
- Bearer token support
- Fully typed (TypeScript)
---
bash
npm install @agadajerry/api-request-builder
`or
`bash
yarn add @agadajerry/api-request-builder
`$3
`javascript
import { RequestBuilder } from '@agadajerry/api-request-builder'
`---
Basic Usage
$3
`javascript
const users = await new RequestBuilder()
.setBaseURL('https://api.example.com')
.setUrl('/users')
.setMethod('GET')
.execute();console.log(users);
`$3
`javascript
const result = await new RequestBuilder()
.setBaseURL('https://api.example.com')
.setUrl('/login')
.setMethod('POST')
.setHeaders({ 'Content-Type': 'application/json' })
.setBody({
email: 'test@example.com',
password: 'password'
})
.execute();console.log(result);
`$3
`javascript
await new RequestBuilder()
.setBaseURL('https://api.example.com')
.setUrl('/profile')
.setMethod('GET')
.setAuthToken('YOUR_JWT_TOKEN')
.execute();
`$3
`javascript
await new RequestBuilder()
.setBaseURL('https://api.example.com')
.setUrl('/products')
.setMethod('GET')
.setQueryParams({
page: 1,
limit: 20
})
.execute();
`$3
`javascript
await new RequestBuilder()
.setBaseURL('https://api.example.com')
.setUrl('/slow-endpoint')
.setMethod('GET')
.setTimeout(5000) // 5 seconds
.execute();
`---
ReactJS Example
`javascript
import { useEffect, useState } from 'react';
import { RequestBuilder } from '@agadajerry/api-request-builder';export function Users() {
const [users, setUsers] = useState([]);
useEffect(() => {
new RequestBuilder()
.setBaseURL('https://jsonplaceholder.typicode.com')
.setUrl('/users')
.setMethod('GET')
.execute()
.then(setUsers)
.catch(console.error);
}, []);
return (
{users.map((u: any) => (
- {u.name}
))}
);
}
``---
MIT
Contributions, issues, and feature requests are welcome!