El consumo de APIs REST desde JavaScript es una de las tareas más comunes en el desarrollo web y móvil.
👉 Para hacer estas solicitudes, en JavaScript se utilizan principalmente dos enfoques:
Características
async/await
.// Obtener un usuario
fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => {
if (!response.ok) {
throw new Error("Error en la petición: " + response.status);
}
return response.json(); // Convertir a JSON
})
.then(data => {
console.log("Usuario:", data);
})
.catch(error => {
console.error("Hubo un problema:", error);
});
👉 Flujo: petición → verificar estado → convertir a JSON → procesar datos.
// Crear un nuevo post
fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
title: "Nuevo Post",
body: "Contenido de ejemplo",
userId: 1
})
})
.then(response => response.json())
.then(data => {
console.log("Post creado:", data);
})
.catch(error => console.error("Error:", error));
👉 Importante: usar headers para indicar Content-Type: application/json
.
async function obtenerUsuarios() {
try {
const resp = await fetch("https://jsonplaceholder.typicode.com/users");
if (!resp.ok) throw new Error("Error " + resp.status);
const usuarios = await resp.json();
console.log("Usuarios:", usuarios);
} catch (err) {
console.error("Hubo un problema:", err);
}
}
obtenerUsuarios();
👉 Más legible que usar .then()
encadenados.
Características
npm install axios
).response.data
y maneja errores con más contexto.import axios from "axios";
axios.get("https://jsonplaceholder.typicode.com/users/1")
.then(response => {
console.log("Usuario:", response.data);
})
.catch(error => {
console.error("Error:", error.message);
});
👉 axios devuelve los datos directamente en response.data
.
import axios from "axios";
axios.post("https://jsonplaceholder.typicode.com/posts", {
title: "Nuevo Post con Axios",
body: "Contenido ejemplo",
userId: 1
})
.then(response => {
console.log("Post creado:", response.data);
})
.catch(error => {
console.error("Error:", error.message);
});
👉 No es necesario hacer JSON.stringify()
, axios lo maneja automáticamente.
import axios from "axios";
async function crearUsuario() {
try {
const resp = await axios.post("https://jsonplaceholder.typicode.com/users", {
nombre: "Laura",
email: "laura@ejemplo.com"
});
console.log("Usuario creado:", resp.data);
} catch (err) {
console.error("Error:", err.message);
}
}
crearUsuario();
👉 Código más limpio y fácil de leer con async/await
.
Ejemplo con autenticación usando token Bearer:
Con fetch
fetch("https://api.ejemplo.com/pedidos", {
headers: {
"Authorization": "Bearer 12345",
"Accept": "application/json"
}
})
.then(res => res.json())
.then(data => console.log(data));
Con axios
import axios from "axios";
axios.get("https://api.ejemplo.com/pedidos", {
headers: {
Authorization: "Bearer 12345",
Accept: "application/json"
}
})
.then(res => console.log(res.data));
Con fetch (manual)
const resp = await fetch("https://api.ejemplo.com/datos");
if (!resp.ok) {
throw new Error("Error en la petición: " + resp.status);
}
Con axios (automático)
try {
const resp = await axios.get("https://api.ejemplo.com/datos");
} catch (err) {
if (err.response) {
console.error("Error:", err.response.status, err.response.data);
}
}
👉 axios facilita la captura de códigos de error y respuestas JSON en errores.
fetch
axios
HTML
ID Nombre Precio
JS con fetch
async function cargarProductos() {
const resp = await fetch("https://jsonplaceholder.typicode.com/posts");
const productos = await resp.json();
const tabla = document.getElementById("tablaProductos");
productos.slice(0, 5).forEach(p => {
const fila = `${p.id} ${p.title} ${(Math.random()*100).toFixed(2)} `;
tabla.innerHTML += fila;
});
}
cargarProductos();
👉 Resultado: la tabla HTML se llena automáticamente con datos de la API (JSONPlaceholder).
fetch y axios son las principales formas de consumir APIs REST en JavaScript. Ambos permiten realizar operaciones GET
, POST
, PUT
, PATCH
, DELETE
.
👉 En resumen: JavaScript convierte a las APIs REST en aplicaciones dinámicas y conectadas al mundo real.