Backend API desarrollado con Node.js y Express que proporciona servicios RESTful para consultar información de usuarios y posts desde la API pública JSONPlaceholder. Este proyecto fue desarrollado como desafío técnico para el proceso de selección al cargo de Desarrollador Backend - Septiembre 2021.
Este proyecto es una aplicación backend construida con Node.js que actúa como intermediario entre un cliente y la API pública JSONPlaceholder. Proporciona endpoints para consultar datos de usuarios y publicaciones con manejo de errores y respuestas JSON estructuradas.
- API REST con Express.js
- Integración con API pública JSONPlaceholder
- Soporte CORS para peticiones cross-origin
- Desarrollo con hot-reload mediante Nodemon
- Peticiones HTTP con Axios
- Manejo de errores robusto
El proyecto está desarrollado con las siguientes tecnologías:
| Tecnología | Versión | Descripción |
|---|---|---|
| Node.js | - | Entorno de ejecución de JavaScript |
| Express | ^4.17.1 | Framework web para Node.js |
| Axios | ^0.21.4 | Cliente HTTP basado en promesas |
| CORS | ^2.8.5 | Middleware para habilitar CORS |
| Request | ^2.88.2 | Cliente HTTP simplificado |
| Nodemon | ^2.0.12 | Herramienta de desarrollo con hot-reload |
ProyectBackend_NodeJs/
│
├── .gitignore # Archivos y directorios ignorados por Git
├── collection.json # Colección de Postman para pruebas de API
├── index.js # Archivo principal del servidor
├── package.json # Dependencias y configuración del proyecto
└── README.md # Documentación del proyecto
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Node.js (versión 12 o superior)
- npm (viene incluido con Node.js)
- Un editor de código (se recomienda Visual Studio Code o IntelliJ IDEA)
node -v
npm -vgit clone https://github.com/cristianjonhson/ProyectBackend_NodeJs.git
cd ProyectBackend_NodeJsnpm installnpm run devEl servidor se iniciará en http://localhost:3000
node index.jsEndpoint de prueba que devuelve un mensaje de bienvenida.
Respuesta:
Hola mundo
Obtiene la lista completa de usuarios desde JSONPlaceholder.
Respuesta: Array con todos los usuarios (ID, nombre, email, etc.)
Ejemplo de respuesta:
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
...
}
]Obtiene todas las publicaciones disponibles.
Respuesta: Array con todas las publicaciones
Ejemplo de respuesta:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident",
"body": "quia et suscipit..."
}
]Obtiene una publicación específica por su ID.
Parámetros:
id(number) - ID de la publicación
Respuesta: Objeto con los datos de la publicación
Ejemplo:
GET /posts/1El proyecto incluye una colección de Postman (collection.json) lista para importar y probar la API.
- Abre Postman
- Click en "Import"
- Selecciona el archivo
collection.jsondel proyecto - La colección se importará con los siguientes endpoints:
- Health Check - GET /
- Get All Users - GET /users
- Get All Posts - GET /posts
- Get Post by ID - GET /posts/:id
Asegúrate de que el servidor esté ejecutándose (npm run dev) antes de realizar las peticiones en Postman.
Actualmente, el token de autenticación está hardcodeado en el código. Para un entorno de producción, se recomienda:
- Crear un archivo
.enven la raíz del proyecto - Agregar las siguientes variables:
PORT=3000
API_BASE_URL=https://jsonplaceholder.typicode.com- Instalar
dotenv:
npm install dotenv- Modificar
index.jspara usar variables de entorno
El proyecto incluye un archivo .gitignore configurado para excluir:
node_modules/- Dependencias instaladaspackage-lock.json- Archivo de lock (se genera automáticamente)- Archivos de logs y temporales
- Variables de entorno (
.env) - Configuraciones de IDEs
- Archivos específicos del sistema operativo
- Implementar variables de entorno para configuración
- Agregar manejo de errores robusto
- Implementar logging con Winston o Morgan
- Agregar pruebas unitarias y de integración
- Documentar API con Swagger/OpenAPI
- Implementar rate limiting
- Agregar validación de datos con Joi o Express Validator
Cristian Jonhson Alvarez
Este proyecto está bajo la Licencia ISC.
⌨️ Desarrollado con ❤️ por Cristian Jonhson Alvarez
## Autor ✒️
* **Cristian Jonhson Alvarez** - *Desarrollo y Documentación* - [cristianjonhson](https://github.com/cristianjonhson)
## Expresiones de Gratitud 🎁
* Agradezco a las personas encargadas de este desafio que confiaron en mis capacidades y talento para desarrollar este nuevo repositorio 🤓
* Recomiendo realizar este proyecto a los demás desarrolladores como metodo de prueba y de ingenio. Soy todo oido a sus preguntas 📢
---
⌨️ con ❤️ por [cristianjonhson](https://github.com/cristianjonhson) 😊