Skip to content

Integración con APIs en React ​

La integración con APIs es una parte esencial del desarrollo de aplicaciones modernas. React facilita este proceso, permitiéndote interactuar con APIs externas para obtener, enviar, o manipular datos en tiempo real.


¿Qué es una API? ​

Una API (Application Programming Interface) es un intermediario que permite la comunicación entre diferentes aplicaciones o servicios. En el contexto de React, las APIs se utilizan para:

  • Obtener datos dinámicos de un servidor.
  • Enviar información al backend.
  • Integrar servicios externos como mapas, pagos o redes sociales.

Métodos comunes para trabajar con APIs ​

En React, los métodos más comunes para interactuar con APIs son:

  1. fetch: Una API nativa de JavaScript para realizar solicitudes HTTP.
  2. axios: Una librería popular que simplifica las solicitudes HTTP.

Uso de fetch ​

Ejemplo básico: Obtener datos ​

jsx
import React, { useEffect, useState } from 'react';

function Users() {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/users')
      .then((response) => response.json())
      .then((data) => setUsers(data))
      .catch((error) => console.error('Error:', error));
  }, []);

  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

export default Users;

Manejo de errores ​

Es importante manejar los errores en caso de que la solicitud falle:

jsx
fetch('https://jsonplaceholder.typicode.com/users')
  .then((response) => {
    if (!response.ok) {
      throw new Error('Error en la solicitud');
    }
    return response.json();
  })
  .catch((error) => console.error('Error:', error));

Uso de axios ​

Instalación ​

Para usar axios, primero instálalo en tu proyecto:

bash
npm install axios

Ejemplo básico ​

jsx
import React, { useEffect, useState } from 'react';
import axios from 'axios';

function Posts() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    axios.get('https://jsonplaceholder.typicode.com/posts')
      .then((response) => setPosts(response.data))
      .catch((error) => console.error('Error:', error));
  }, []);

  return (
    <div>
      {posts.map((post) => (
        <article key={post.id}>
          <h2>{post.title}</h2>
          <p>{post.body}</p>
        </article>
      ))}
    </div>
  );
}

export default Posts;

Enviar datos a la API ​

Puedes enviar datos utilizando métodos HTTP como POST, PUT o DELETE.

Ejemplo con fetch ​

jsx
function createUser(user) {
  fetch('https://jsonplaceholder.typicode.com/users', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(user),
  })
    .then((response) => response.json())
    .then((data) => console.log('Usuario creado:', data))
    .catch((error) => console.error('Error:', error));
}

Ejemplo con axios ​

jsx
function createUser(user) {
  axios.post('https://jsonplaceholder.typicode.com/users', user)
    .then((response) => console.log('Usuario creado:', response.data))
    .catch((error) => console.error('Error:', error));
}

Estado de carga ​

Es buena práctica informar al usuario sobre el estado de la solicitud (cargando, éxito o error).

Ejemplo ​

jsx
function Users() {
  const [users, setUsers] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/users')
      .then((response) => response.json())
      .then((data) => {
        setUsers(data);
        setLoading(false);
      })
      .catch((error) => {
        console.error('Error:', error);
        setLoading(false);
      });
  }, []);

  if (loading) {
    return <p>Cargando...</p>;
  }

  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

Consejos para trabajar con APIs ​

  1. Manejar errores adecuadamente: Siempre captura y maneja los errores para evitar fallos inesperados.
  2. Mostrar indicadores de carga: Mejora la experiencia del usuario mostrando un estado de carga mientras esperas la respuesta.
  3. Evitar solicitudes innecesarias: Usa hooks como useEffect para realizar solicitudes solo cuando sea necesario.
  4. Proteger datos sensibles: No almacenes claves API en el código cliente; usa variables de entorno.

Conclusiones ​

React facilita la integración con APIs utilizando herramientas nativas como fetch o librerías como axios. Estas capacidades son esenciales para construir aplicaciones dinámicas y ricas en funcionalidades. Dominar estas técnicas te permitirá interactuar con datos externos de manera eficiente y robusta.