Métodos
Esta página documenta los métodos disponibles en detalle.
Clase Principal
API
La clase principal para interactuar con la API.
class API {
constructor(config: APIConfig)
get(endpoint: string, options?: RequestOptions): Promise<Response>
post(endpoint: string, data: any, options?: RequestOptions): Promise<Response>
put(endpoint: string, data: any, options?: RequestOptions): Promise<Response>
delete(endpoint: string, options?: RequestOptions): Promise<Response>
}Constructor
Crea una nueva instancia de la API.
Parámetros:
config(APIConfig) - Configuración de la API
Ejemplo:
const api = new API({
baseURL: 'https://api.ejemplo.com/v1',
token: 'tu-token-aqui',
timeout: 30000
})Tipo APIConfig:
interface APIConfig {
baseURL: string
token?: string
timeout?: number
headers?: Record<string, string>
}Métodos HTTP
get()
Realiza una petición GET.
Firma:
get(endpoint: string, options?: RequestOptions): Promise<Response>Parámetros:
endpoint(string) - El endpoint a consultaroptions(RequestOptions, opcional) - Opciones adicionales
Retorna:
Promise<Response>- La respuesta de la petición
Ejemplo:
// Obtener lista de usuarios
const users = await api.get('/users')
// Con parámetros de query
const users = await api.get('/users', {
params: {
page: 1,
limit: 10
}
})
// Con headers personalizados
const users = await api.get('/users', {
headers: {
'X-Custom-Header': 'valor'
}
})post()
Realiza una petición POST.
Firma:
post(endpoint: string, data: any, options?: RequestOptions): Promise<Response>Parámetros:
endpoint(string) - El endpoint a consultardata(any) - Los datos a enviaroptions(RequestOptions, opcional) - Opciones adicionales
Retorna:
Promise<Response>- La respuesta de la petición
Ejemplo:
// Crear un nuevo usuario
const newUser = await api.post('/users', {
name: 'Juan Pérez',
email: 'juan@ejemplo.com',
password: 'contraseña-segura'
})
// Con headers personalizados
const newUser = await api.post('/users', userData, {
headers: {
'Content-Type': 'application/json'
}
})put()
Realiza una petición PUT.
Firma:
put(endpoint: string, data: any, options?: RequestOptions): Promise<Response>Parámetros:
endpoint(string) - El endpoint a consultardata(any) - Los datos a actualizaroptions(RequestOptions, opcional) - Opciones adicionales
Retorna:
Promise<Response>- La respuesta de la petición
Ejemplo:
// Actualizar un usuario
const updatedUser = await api.put('/users/123', {
name: 'Juan Pérez Actualizado',
email: 'juan.nuevo@ejemplo.com'
})delete()
Realiza una petición DELETE.
Firma:
delete(endpoint: string, options?: RequestOptions): Promise<Response>Parámetros:
endpoint(string) - El endpoint a consultaroptions(RequestOptions, opcional) - Opciones adicionales
Retorna:
Promise<Response>- La respuesta de la petición
Ejemplo:
// Eliminar un usuario
await api.delete('/users/123')Tipos
RequestOptions
Opciones para las peticiones.
interface RequestOptions {
params?: Record<string, any>
headers?: Record<string, string>
timeout?: number
signal?: AbortSignal
}Propiedades:
params- Parámetros de queryheaders- Headers HTTP personalizadostimeout- Timeout en milisegundossignal- AbortSignal para cancelar la petición
Response
Respuesta de una petición.
interface Response<T = any> {
data: T
status: number
statusText: string
headers: Record<string, string>
}Propiedades:
data- Datos de la respuestastatus- Código de estado HTTPstatusText- Texto del estado HTTPheaders- Headers de la respuesta
Utilidades
setToken()
Establece el token de autenticación.
Firma:
setToken(token: string): voidEjemplo:
api.setToken('nuevo-token')clearToken()
Limpia el token de autenticación.
Firma:
clearToken(): voidEjemplo:
api.clearToken()setTimeout()
Establece el timeout por defecto.
Firma:
setTimeout(timeout: number): voidEjemplo:
api.setTimeout(60000) // 60 segundosManejo de Errores
Todos los métodos pueden lanzar errores que deben ser manejados:
try {
const users = await api.get('/users')
} catch (error) {
if (error.status === 401) {
console.error('No autenticado')
} else if (error.status === 404) {
console.error('No encontrado')
} else {
console.error('Error:', error.message)
}
}Tipo de Error
interface APIError extends Error {
status: number
statusText: string
data?: any
}Interceptores
Puedes agregar interceptores para modificar peticiones o respuestas:
Interceptor de Peticiones
api.interceptors.request.use((config) => {
// Modificar la configuración antes de enviar
config.headers['X-Custom-Header'] = 'valor'
return config
})Interceptor de Respuestas
api.interceptors.response.use(
(response) => {
// Modificar la respuesta exitosa
return response
},
(error) => {
// Manejar errores
if (error.status === 401) {
// Redirigir al login
}
return Promise.reject(error)
}
)Ejemplos Avanzados
Cancelar Peticiones
const controller = new AbortController()
// Iniciar petición
const promise = api.get('/users', {
signal: controller.signal
})
// Cancelar después de 5 segundos
setTimeout(() => {
controller.abort()
}, 5000)
try {
const users = await promise
} catch (error) {
if (error.name === 'AbortError') {
console.log('Petición cancelada')
}
}Peticiones en Paralelo
const [users, posts, comments] = await Promise.all([
api.get('/users'),
api.get('/posts'),
api.get('/comments')
])Reintentos
async function fetchWithRetry(endpoint, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await api.get(endpoint)
} catch (error) {
if (i === maxRetries - 1) throw error
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)))
}
}
}
const users = await fetchWithRetry('/users')