Curso de Backend con Node.js: API REST con Express.js

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

✨ Introducción

¿Te gustaría aprender a crear una API profesional usando Node.js y TypeScript, pero sin complicarte con tiendas en línea? En este tutorial vas a construir paso a paso un CRUD completo para gestionar solicitudes de vacaciones, algo súper útil para cualquier empresa o startup.

Este proyecto es ideal si estás comenzando con Express y querés practicar la creación de endpoints, métodos HTTP, validaciones básicas, y cómo organizar tu código de forma profesional.

🧰 Requisitos previos

  • Tener instalado Node.js, Yarn o npm
  • Conocimientos básicos de JavaScript o TypeScript
  • Tener ganas de crear algo útil y realista

🧩 Paso a paso

Paso 1: Inicializar el proyecto

mkdir vacaciones-api
cd vacaciones-api
yarn init -y
yarn add express
yarn add -D typescript ts-node nodemon @types/node @types/express
yarn tsc --init

Agregá esto a package.json:

"scripts": {
  "dev": "nodemon src/index.ts",
  "build": "tsc",
  "start": "node dist/index.js"
}

Paso 2: Estructura básica del proyecto

vacaciones-api/
├── src/
│   ├── index.ts
│   ├── routes/
│   │   └── vacationRoutes.ts
│   └── controllers/
│       └── vacationController.ts
├── tsconfig.json

Paso 3: Crear un servidor Express

src/index.ts

import express from "express";
import { vacationRouter } from "./routes/vacationRoutes";

const app = express();
app.use(express.json());
app.use("/vacaciones", vacationRouter);

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

Paso 4: Definir endpoints del CRUD

📌 GET /vacaciones

  • Descripción: Lista todas las solicitudes
  • Método: GET

📌 GET /vacaciones/:id

  • Descripción: Obtiene una solicitud específica
  • Método: GET

📌 POST /vacaciones

  • Descripción: Crea una nueva solicitud
  • Método: POST
  • Body:
{
  "empleado": "Luciano Soto",
  "fechaInicio": "2025-12-10",
  "fechaFin": "2025-12-20",
  "motivo": "Vacaciones anuales"
}

📌 PUT /vacaciones/:id

  • Descripción: Actualiza una solicitud existente
  • Método: PUT

📌 DELETE /vacaciones/:id

  • Descripción: Elimina una solicitud
  • Método: DELETE

Paso 5: Crear el controlador

src/controllers/vacationController.ts

import { Request, Response } from "express";

let vacaciones: any[] = [];
let nextId = 1;

export const getVacaciones = (req: Request, res: Response) => {
  res.json(vacaciones);
};

export const getVacacion = (req: Request, res: Response) => {
  const id = Number(req.params.id);
  const vacacion = vacaciones.find(v => v.id === id);
  vacacion ? res.json(vacacion) : res.status(404).send("No encontrada");
};

export const crearVacacion = (req: Request, res: Response) => {
  const nueva = { id: nextId++, ...req.body };
  vacaciones.push(nueva);
  res.status(201).json(nueva);
};

export const actualizarVacacion = (req: Request, res: Response) => {
  const id = Number(req.params.id);
  const index = vacaciones.findIndex(v => v.id === id);
  if (index === -1) return res.status(404).send("No encontrada");
  vacaciones[index] = { id, ...req.body };
  res.json(vacaciones[index]);
};

export const eliminarVacacion = (req: Request, res: Response) => {
  const id = Number(req.params.id);
  vacaciones = vacaciones.filter(v => v.id !== id);
  res.status(204).send();
};

Paso 6: Crear las rutas

src/routes/vacationRoutes.ts

import { Router } from "express";
import {
  getVacaciones,
  getVacacion,
  crearVacacion,
  actualizarVacacion,
  eliminarVacacion,
} from "../controllers/vacationController";

export const vacationRouter = Router();

vacationRouter.get("/", getVacaciones);
vacationRouter.get("/:id", getVacacion);
vacationRouter.post("/", crearVacacion);
vacationRouter.put("/:id", actualizarVacacion);
vacationRouter.delete("/:id", eliminarVacacion);

Paso 7: Ejecutar el proyecto

yarn dev

Abrí Postman o Thunder Client y comenzá a probar tus endpoints.


🎉 Resultado final

Tendrás una API REST funcional y organizada que te permite gestionar solicitudes de vacaciones de forma sencilla. Ideal para integrarla luego con bases de datos como MongoDB, PostgreSQL o una interfaz en React.

Curso de Backend con Node.js: API REST con Express.js

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados