Cómo conectar React y Node/Express en un frontend y backend

Go to Homepage

Conectar React y Node/Express puede parecer intimidante, pero no debe serlo

Sin embargo, una vez que entiendes la estructura y el proceso de cada una de estas herramientas, la integración puede llevarse a cabo de manera bastante sencilla. En este artículo, te guiaremos a través de los pasos necesarios para conectar React y Node/Express en un frontend y backend.

Nos centraremos en dos aspectos fundamentales: cómo configurar tu proyecto para usar React junto a Node/Express y cómo enviar datos desde React hacia Node/Express.

Configura tu proyecto

Lo primero que debes hacer para conectar React y Node/Express es crear un nuevo proyecto. Hay varias maneras de hacerlo, pero para los fines de este artículo, vamos a utilizar create-react-app y express-generator.

Antes de empezar, asegúrate de tener Node.js y npm instalados en tu ordenador.

1. Crea tu proyecto React utilizando create-react-app

Para crear un nuevo proyecto con create-react-app, simplemente abre tu terminal y escribe npx create-react-app mi-proyecto. Esto creará un nuevo proyecto llamado “mi-proyecto” en tu sistema.

2. Instala express-generator y crea tu proyecto Node/Express

Para crear un nuevo proyecto Node/Express, debes instalar express-generator primero. Abre tu terminal y escribe npm install -g express-generator. Esto instalara express-generator como un paquete global de npm.

Luego, para crear un nuevo proyecto Node/Express, escribe express mi-proyecto-backend. Esto creará un nuevo proyecto llamado “mi-proyecto-backend” en tu sistema.

3. Instala las dependencias necesarias en ambos proyectos

Para conectar React y Node/Express, debes instalar algunas dependencias en ambos proyectos. En el proyecto de React, abre la terminal y escribe npm install axios. Esto instalará Axios, una biblioteca que te ayudará a enviar peticiones HTTP desde React a Node/Express.

Por otro lado, en el proyecto de Node/Express, abre la terminal y escribe npm install cors body-parser. CORS te permitirá enviar solicitudes desde tu frontend creado con React, mientras que Body-parser te ayudará a analizar datos en el cuerpo de la solicitud.

4. Ajusta la configuración de ambos proyectos

Para que React y Node/Express funcionen juntos, es importante ajustar la configuración de cada proyecto.

En el proyecto de React, abre el archivo src/App.js y borra todo el contenido. Luego escribe el siguiente código:

import React, { useEffect, useState } from "react";
import axios from "axios";

function App() {
    const [data, setData] = useState("");
    useEffect(() => {
        axios.get("http://localhost:5000").then((response) => {
            setData(response.data);
        });
    }, []);

    return (
        <div>
            <h1>Conectar React con Node/Express</h1>
            <p>{data}</p>
        </div>
    );
}

export default App;

Este código crea un componente React simple que utiliza useState y useEffect para mostrar los datos que recibe de Node/Express.

Ahora, en el proyecto de Node/Express, abre el archivo app.js y reemplaza todo el contenido con el siguiente código:

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");

const app = express();
const port = 5000;

app.use(cors());
app.use(bodyParser.json());

app.get("/", (req, res) => {
    res.send("¡Conexión exitosa entre Node/Express y React!");
});

app.listen(port, () => {
    console.log(`Servidor corriendo en http://localhost:${port}`);
});

Este código configura un servidor de Node/Express básico que permite las solicitudes GET y envía una respuesta simple.

Envía datos desde React

Ahora que hemos configurado nuestro proyecto para usar React junto con Node/Express, es necesario crear una forma de enviar datos desde React hacia Node/Express.

Para hacerlo, podemos utilizar el componente Form en React. Este componente nos permitirá crear un formulario que los usuarios pueden completar para enviar información a nuestro servidor Node/Express.

Aquí está el código que puedes agregar a tu archivo src/App.js:

import React, { useState } from "react";
import axios from "axios";

function App() {
    const [name, setName] = useState("");
    const [email, setEmail] = useState("");
    const [phone, setPhone] = useState("");

    const handleSubmit = (event) => {
        event.preventDefault();
        axios
            .post("http://localhost:5000/users", {
                name,
                email,
                phone,
            })
            .then(() => alert("Datos enviados con éxito"))
            .catch(() => alert("Error al enviar los datos"));
    };

    return (
        <div>
            <h1>Conectar React con Node/Express</h1>
            <form onSubmit={handleSubmit}>
                <label>
                    Nombre:
                    <input
                        type="text"
                        value={name}
                        onChange={(e) => setName(e.target.value)}
                    />
                </label>
                <label>
                    Correo electrónico:
                    <input
                        type="email"
                        value={email}
                        onChange={(e) => setEmail(e.target.value)}
                    />
                </label>
                <label>
                    Teléfono:
                    <input
                        type="tel"
                        value={phone}
                        onChange={(e) => setPhone(e.target.value)}
                    />
                </label>
                <button type="submit">Enviar</button>
            </form>
        </div>
    );
}

export default App;

Este código crea un formulario simple que le pide al usuario su nombre, correo electrónico y teléfono. Cuando el usuario hace clic en el botón “Enviar”, los datos se envían a nuestro servidor Node/Express utilizando Axios y el método POST.

Para manejar esta solicitud en Node/Express, necesitamos agregar una ruta POST en nuestro archivo app.js.

app.post("/users", (req, res) => {
    const { name, email, phone } = req.body;
    console.log(`Nuevo usuario: ${name}, ${email}, ${phone}`);
    res.send(`${name}, tus datos han sido recibidos correctamente`);
});

Este código escucha las solicitudes POST en la ruta “/usuarios”, y envía una respuesta simple en el servidor.

Conectar React y Node/Express puede parecer un proceso intimidante al principio, pero una vez que entiendes los pasos y la anatomía de cada herramienta, la integración es bastante sencilla. En este artículo, te hemos guiado a través de los pasos necesarios para conectar React y Node/Express en un frontend y backend. Hemos visto cómo configurar nuestros proyectos de React y Node/Express, y cómo enviar datos desde React hacia Node/Express utilizando el método POST.

Paso a paso se puede lograr la conexión entre el frontend y el backend

En nuestro proyecto web, necesitamos conectar el frontend, hecho en React, con el backend, hecho en Node/Express. Aunque al principio esto puede parecer intimidante, en realidad es un proceso sencillo que se puede lograr paso a paso.

Lo primero que necesitamos hacer es asegurarnos de que ambos proyectos estén en el mismo directorio y que ambos estén corriendo en su propio puerto. Para hacer esto, podemos abrir dos terminales y correr ambos proyectos desde la raíz del directorio usando los siguientes comandos:

cd frontend
npm start
cd backend
node index.js

Después de verificar que ambos proyectos están corriendo correctamente, es necesario configurar un proxy en la parte de React para que se pueda comunicar con el backend. Podemos hacer esto de la siguiente manera en el archivo package.json de nuestro frontend:

"proxy": "http://localhost:3001/"

Esto redirigirá todas las solicitudes que React haga a cualquier ruta que no reconozca a nuestro backend en el puerto 3001.

Ahora, necesitamos crear una ruta de endpoint en el backend para recibir solicitudes desde el frontend. Podemos hacerlo en el archivo index.js de nuestra API de la siguiente manera:

const express = require("express");
const app = express();

app.get("/api/data", (req, res) => {
    res.json({ message: "¡Hola desde el backend!" });
});

app.listen(3001, () => {
    console.log("API escuchando en el puerto 3001");
});

En este ejemplo, hemos creado una ruta /api/data que envía una respuesta JSON con un mensaje simple. Es importante tener en cuenta que el puerto donde nuestra API está escuchando es el 3001, que coincide con el proxy que configuramos en nuestro frontend.

Finalmente, necesitamos llamar a esta ruta desde nuestro frontend. Esto se puede hacer utilizando una librería de solicitudes HTTP, como Axios. Podemos hacer una solicitud GET al endpoint que acabamos de crear de la siguiente manera en un archivo App.js:

import React, { useState, useEffect } from "react";
import axios from "axios";

function App() {
    const [data, setData] = useState("");

    useEffect(() => {
        axios
            .get("/api/data")
            .then((res) => {
                setData(res.data.message);
            })
            .catch((err) => {
                console.log(err);
            });
    }, []);

    return (
        <div>
            <h1>{data}</h1>
        </div>
    );
}

export default App;

En este ejemplo, usamos el hook useEffect para hacer la solicitud GET al renderizar el componente. Luego, actualizamos el estado del componente con la respuesta de la solicitud.

Siguiendo estos pasos, hemos logrado la conexión entre nuestro frontend y nuestro backend. Ahora podemos crear más rutas de endpoint en nuestro backend y llamarlas desde nuestro frontend según sea necesario. ¡A programar!

Al utilizar una API se pueden comunicar React y Node/Express de manera sencilla

Conectar React y Node/Express puede ser una tarea difícil para aquellos que se estén adentrando en este mundo. Sin embargo, al utilizar una API se pueden comunicar ambas plataformas de manera sencilla.

Cuando comencé a trabajar en proyectos con React y Node/Express, me encontré con el problema de tener que unir ambos lados. No sabía cómo hacerlo ni por dónde empezar. Por suerte, encontré la solución en el uso de una API, una forma de comunicación entre el cliente y el servidor.

¿Qué es una API?

Una API es un conjunto de reglas y mecanismos que permite la comunicación entre diferentes aplicaciones. En términos más simples, podemos decir que es una forma de comunicar y transferir información entre el cliente (React) y el servidor (Node/Express).

¿Cómo se utiliza una API para conectar React y Node/Express?

Primero, debemos crear nuestra API en Node/Express. Esto lo podemos hacer utilizando la librería “Express”. Una vez que tengamos nuestra API creada, debemos establecer los endpoints (puntos finales) para que el cliente (React) pueda acceder a la información que necesite.

Por ejemplo, si queremos crear una API que nos permita obtener una lista de productos, podemos crear un endpoint llamado “api/productos”. Este endpoint nos permitirá obtener una lista de todos los productos existentes.

En el lado del cliente (React), debemos crear una llamada a nuestra API utilizando el método “fetch”. Este método nos permite realizar peticiones HTTP al servidor para obtener información. Para nuestra llamada, debemos utilizar la URL de nuestro endpoint (por ejemplo, “http://localhost:3000/api/productos”).

Una vez realizada la llamada, podemos utilizar la respuesta recibida para mostrar la información en nuestra aplicación de React.

Aquí un pequeño ejemplo de cómo utilizar la API para obtener una lista de productos desde React:

fetch("http://localhost:3000/api/productos")
    .then((response) => response.json())
    .then((data) => {
        // Utilizamos la información recibida en "data" para mostrarla en nuestra aplicación.
    });

Siguiendo esta misma lógica, podemos crear diferentes endpoints para acceder a diferentes datos en nuestra API. Por ejemplo, podemos crear un endpoint que nos permita agregar nuevos productos a la lista o actualizar información de productos existentes.

Utilizar una API es una forma sencilla y efectiva de conectar React y Node/Express. Nos permite establecer una comunicación entre ambas plataformas y transferir información de manera eficiente. Siguiendo los pasos mencionados anteriormente, podemos crear nuestra propia API y utilizarla en nuestros proyectos de React y Node/Express.

Un enfoque modular y escalable es importante al conectar ambas tecnologías

Al conectar React con Node/Express, es importante tener una estructura modular y escalable en nuestro proyecto. Desde nuestra experiencia, hemos aprendido que al seguir esta práctica, nos permite crear proyectos más sólidos, predecibles y fáciles de mantener a largo plazo.

Uno de los mayores beneficios de un enfoque modular es la capacidad de reutilizar el código. En lugar de repetir el mismo código en varias partes de nuestro proyecto, podemos crear módulos y utilizarlos en diferentes secciones de la aplicación. Esto no sólo reduce la cantidad de código que necesitamos escribir, sino que también nos permite hacer cambios en el código de una sola vez, en lugar de hacer cambios en varias secciones del proyecto.

Otro beneficio de un enfoque modular es la capacidad de trabajar en equipo. Al tener diferentes partes de la aplicación separadas en módulos, diferentes miembros del equipo pueden trabajar en diferentes secciones sin interferir en el trabajo de los demás. Además, esto hace que sea más fácil para los nuevos miembros del equipo integrarse en el proyecto y contribuir de manera efectiva.

Al diseñar nuestro proyecto, es importante mantener en mente la escalabilidad del mismo. En lugar de pensar en el proyecto en términos de lo que necesita ahora, debemos pensar en lo que necesitará en el futuro. Si nuestro proyecto crece en tamaño y complejidad, ¿estará preparado para manejarlo?

Es importante tener en cuenta que una escalabilidad eficaz no significa necesariamente agregar más código, sino simplificar y refinar el código existente. Un buen enfoque modular nos permite agregar nuevas características y funcionalidad sin afectar el resto de la aplicación.

Un ejemplo de cómo puede ser un enfoque modular y escalable al conectar React y Node/Express es usando la arquitectura MVC (Modelo Vista Controlador). En esta arquitectura, los modelos, vistas y controladores se dividen en diferentes módulos.

Por ejemplo, podemos tener un usersController.js que maneje la lógica de usuario, un usersModel.js que maneje la interacción con nuestra base de datos, y un usersView.js que maneje la interfaz de usuario relacionada con usuarios. Con esta estructura, cuando necesitemos agregar alguna otra funcionalidad específica de usuario, sabemos exactamente dónde agregarla sin afectar el resto del proyecto.

Además, podemos utilizar módulos externos para agregar funcionalidades adicionales. Por ejemplo, podemos utilizar un módulo de autenticación externo en lugar de crear uno desde cero. Esto no solo reduce la cantidad de tiempo que necesitamos para agregar la funcionalidad, sino que también reduce la cantidad de código que necesitamos mantener y depurar.

Al conectar React con Node/Express, es importante tener un enfoque modular y escalable en nuestro proyecto. Esta práctica no solo nos permite crear proyectos más sólidos y fáciles de mantener, sino que también nos permite agregar funcionalidades adicionales sin afectar el resto del proyecto. Utilizando la arquitectura MVC y módulos externos, podemos crear proyectos escalables sin tener que escribir más código de lo necesario.

Una vez conectados, se pueden utilizar todas las funcionalidades de React y Node/Express en conjunto

Una vez que logramos conectar React y Node/Express, podemos disfrutar de todas las ventajas y funcionalidades de ambas tecnologías trabajando en conjunto.

Uno de los principales beneficios de esta conexión es que podemos utilizar las API creadas en el backend de Node/Express para realizar solicitudes y actualizar datos en tiempo real en nuestro frontend de React. Esto puede ser especialmente útil en aplicaciones que requieren una amplia interacción entre el usuario y la base de datos.

Además, el uso de React nos permite crear una interfaz de usuario intuitiva y agradable a la vista, con la que el usuario podrá interactuar de una manera amigable y sin complicaciones. Por otro lado, Node/Express nos brinda una arquitectura especializada para el manejo de solicitudes y datos, lo que nos permite tener un flujo de datos seguro y eficiente.

Por ejemplo, supongamos que estamos trabajando en una aplicación para un restaurante que desea permitir a sus clientes realizar reservaciones de mesas de forma remota. En este caso, podríamos utilizar React para crear una interfaz elegante y fácil de usar desde donde los usuarios puedan hacer sus reservas. Luego, podríamos utilizar Node/Express para recibir y guardar estas reservas en la base de datos del restaurante.

Además, también podríamos utilizar Node/Express para enviar notificaciones al restaurante cuando se realicen nuevas reservas, o para enviar correos electrónicos al cliente confirmando su reserva. Gracias a la conectividad de Node/Express y React, todo esto se puede realizar de manera rápida y efectiva.

Otro punto importante a destacar es la posibilidad de crear aplicaciones escalables y reutilizables. Al utilizar Node/Express y React juntos, podemos crear componentes que puedan ser reutilizados en diferentes partes de la aplicación, lo que ahorra tiempo y recursos al momento de desarrollar nuevos módulos.

Por ejemplo, en vez de tener que crear una interfaz nueva para cada formulario de datos, podríamos crear un componente general de formulario en React que pueda ser utilizado para cualquier campo en la aplicación. De esta manera, no sólo se reduce el tiempo de desarrollo, sino que también se mantiene una estructura uniforme y coherente en toda la aplicación.

Finalmente, la conexión entre React y Node/Express también nos permite utilizar el poder de librerías y paquetes existentes en ambas tecnologías. Por ejemplo, podríamos utilizar una librería de gráficos en React para crear visualizaciones interactivas de datos, o una librería de autenticación en Node/Express, como Passport, para asegurar que sólo los usuarios autorizados puedan acceder a ciertas partes de la aplicación.

Conectar React y Node/Express nos brinda una gran cantidad de posibilidades y ventajas para crear aplicaciones eficientes, escalables y atractivas visualmente. Con su ayuda, podemos desarrollar funciones que van desde simples formularios de contacto hasta aplicaciones mucho más complejas, facilitando la creación de interfaces de usuario y la gestión de datos de manera óptima.

Otros Artículos