wundertec-core
Version:
Librería estándar de utilidades e integraciones AWS + helpers generales
58 lines (50 loc) • 1.5 kB
text/typescript
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios";
export interface AxiosClientOptions extends AxiosRequestConfig {
/** Tiempo por defecto de timeout en ms */
timeout?: number;
}
export class AxiosClient {
private client: AxiosInstance;
constructor(config?: AxiosClientOptions) {
this.client = axios.create({
timeout: config?.timeout || 5000,
...config,
});
}
/** Realiza una petición GET y retorna los datos */
async get<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
const response: AxiosResponse<T> = await this.client.get<T>(url, config);
return response.data;
}
/** Realiza una petición POST con datos y retorna los datos */
async post<T>(
url: string,
data?: any,
config?: AxiosRequestConfig
): Promise<T> {
const response: AxiosResponse<T> = await this.client.post<T>(
url,
data,
config
);
return response.data;
}
/** Realiza una petición PUT y retorna los datos */
async put<T>(
url: string,
data?: any,
config?: AxiosRequestConfig
): Promise<T> {
const response: AxiosResponse<T> = await this.client.put<T>(
url,
data,
config
);
return response.data;
}
/** Realiza una petición DELETE y retorna los datos */
async delete<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
const response: AxiosResponse<T> = await this.client.delete<T>(url, config);
return response.data;
}
}