Damián De Luca - Capacitación & Desarrollo Web

Cómo obtener datos de una REST API con React

reactjs
Cómo obtener datos de una REST API con React

React es es una de las librerías más populares en el mundo del desarrollo Web. Conocer sus mecanismos y características principales resulta muy importante si deseamos implementar soluciones en sitios o aplicaciones web. En este artículo, aprenderemos a obtener datos de una REST API utilizando React.

A continuación veremos una ejemplo detallado en cada uno de sus pasos. Tomaremos como idea una tienda online y obtendremos los datos de productos de una REST API para mostrarlos en una lista con React.

El planteo del proyecto

Para este ejemplo nos enfocaremos en un caso práctico: un sistema de que obtiene un listado y muestra productos habilitados, ordenados por precio.

Para este ejemplo Los datos que obtendremos serán un array de objetos JSON con la siguiente estructura: id de producto, nombre del producto, precio, categoría y un campo habilitado (booleano). Usaremos la versión más reciente de React y aprovecharemos el poder de los Hooks, en particular useState y useEffect.

La REST API y los datos del ejemplo

En el contexto de una tienda online, los datos de productos cambian frecuentemente. Una REST API permite gestionar esos datos de manera eficiente, interactuando con el backend para obtener la lista actualizada de productos. React, con sus Hooks, proporciona una forma sencilla y declarativa para manejar estos flujos de datos asíncronos, lo que lo convierte en una excelente opción para desarrollar aplicaciones empresariales y de comercio electrónico.

Antes de comenzar con el código, vamos a definir los datos de ejemplo que simularemos obtener desde una REST API:

[
  { "id": 1, "producto": "Laptop", "precio": 1200, "categoria": "Electrónica", "habilitado": true },
  { "id": 2, "producto": "Teclado", "precio": 40, "categoria": "Accesorios", "habilitado": false },
  { "id": 3, "producto": "Ratón", "precio": 25, "categoria": "Accesorios", "habilitado": true },
  { "id": 4, "producto": "Monitor", "precio": 300, "categoria": "Electrónica", "habilitado": true },
  { "id": 5, "producto": "Silla", "precio": 150, "categoria": "Muebles", "habilitado": false },
  { "id": 6, "producto": "Auriculares", "precio": 80, "categoria": "Accesorios", "habilitado": true },
  { "id": 7, "producto": "Micrófono", "precio": 120, "categoria": "Accesorios", "habilitado": true },
  { "id": 8, "producto": "Escritorio", "precio": 250, "categoria": "Muebles", "habilitado": true },
  { "id": 9, "producto": "Cámara Web", "precio": 60, "categoria": "Electrónica", "habilitado": false },
  { "id": 10, "producto": "Impresora", "precio": 200, "categoria": "Electrónica", "habilitado": true }
]

Como podemos ver, los datos con los que trabajaremos están representados en una array de JSON. Allí tenemos la id de producto, el nombre del producto, el precio, la categoría a la que pertenecen y el key habilitado, para saber si están disponibles en el sistema.

La aplicación en React

Para comenzar, primero, asegurémonos de tener la última versión de React instalada y un proyecto creado. Encontraremos más detalles sobre como crear un proyecto con React podemos leer la documentación: https://es.react.dev/learn.

Una vez que tenemos el proyecto listo vamos a dividir nuestra aplicación en componentes. En este ejemplo, utilizaremos los siguientes Hooks de React:

Llamada a la API con fetch y manejo de los datos

A continuación, crearemos un componente ProductList que se encargará de obtener los productos habilitados desde la API y mostrarlos en una lista ordenada por precio.

El código del componente es el que podemos observar a continuación:

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

const ProductList = () => {
  // Declaramos el estado para almacenar los productos
  const [products, setProducts] = useState([]);

  // Dentro de useEffect vamos a cargar los datos cuando el componente se monta
  useEffect(() => {
    // Simulamos una llamada a una API
    const fetchProducts = async () => {
      const response = await fetch('https://api.example.com/products');
      const data = await response.json();
      // Filtramos solo los productos habilitados y los ordenamos por precio
      const enabledProducts = data
        .filter(product => product.habilitado)
        .sort((a, b) => a.precio - b.precio);
      setProducts(enabledProducts);
    };

    fetchProducts();
  }, []); // [] se asegura de que useEffect se ejecute solo una vez

  // Renderizamos la lista de productos habilitados
  return (
    <div>
      <h1>Productos Disponibles</h1>
      <ul>
        {products.map(product => (
          <li key={product.id}>
            {product.producto} - ${product.precio} ({product.categoria})
          </li>
        ))}
      </ul>
    </div>
  );
};

export default ProductList;

Código explicado:

Casos de uso

Este patrón de consumo de datos desde una REST API es común en ecommerce. En lugar de almacenar los productos en el frontend, se solicita al servidor la información actualizada cada vez que sea necesario. Esto permite mantener la tienda en línea con información precisa y dinámica.

Algunos beneficios para destacar:

En conclusión

En este artículo, hemos desarrollado un ejemplo que nos brinda el panorama sobre cómo consumir una REST API desde React utilizando Hooks. Para este caso, mostramos una lista de productos habilitados, ordenados por precio. Este patrón es fundamental para aplicaciones empresariales, especialmente en comercio electrónico, donde los datos cambian frecuentemente.

La integración de React con diferentes orígenes de datos permite desarrollar soluciones escalables y eficientes, manteniendo la experiencia del usuario rápida y fluida. Si estamos creando una tienda online o un sistema de gestión de productos, este enfoque te permitirá manejar los datos de manera óptima, integrando React y REST APIs con facilidad.

Si te interesa saber más sobre React déjame un comentario o escríbeme un mensaje.

Salir de la versión móvil