Este proyecto es una aplicación de acortador de URLs construida en Java usando Spring Boot. Permite a los usuarios ingresar una URL larga y obtener una versión corta que redirige a la URL original. La aplicación también incluye persistencia en una base de datos MySQL y está completamente dockerizada.
- Acortar URLs: Genera una versión corta de una URL larga.
- Redirección: Redirige la URL acortada a la URL original.
- Persistencia: Almacena las URLs en una base de datos MySQL.
- Dockerización: La aplicación y la base de datos se ejecutan en contenedores Docker.
- Java 17 o superior
- Maven 3.8+
- Docker y Docker Compose
-
Clonar el repositorio:
git clone https://github.com/tu-usuario/url-shortener.git cd url-shortener -
Construir el proyecto:
Asegúrate de estar en el directorio raíz del proyecto y ejecuta:
mvn clean install
-
Ejecutar la aplicación localmente:
Puedes ejecutar la aplicación localmente sin Docker usando:
mvn spring-boot:run
-
Dockerizar la aplicación:
Para ejecutar la aplicación y la base de datos en contenedores Docker, sigue estos pasos:
-
Compilar la aplicación:
mvn clean package
-
Levantar los contenedores:
docker-compose up --build
La aplicación estará disponible en
http://localhost:8080. -
La base de datos MySQL se ejecuta en un contenedor Docker y está disponible en localhost:3306. Puedes conectarte a ella usando un cliente MySQL o desde tu IDE con las siguientes credenciales:
- Host:
localhost - Port:
3306 - Database:
urlshortener - Username:
user - Password:
userpassword
Este proyecto incluye pruebas unitarias utilizando JUnit y Mockito. Para ejecutar las pruebas, usa el siguiente comando:
mvn test-
Acortar una URL:
- URL:
/api/v1/shorten - Método:
POST - Cuerpo del Request:
{ "originalUrl": "https://example.com" } - Respuesta:
{ "shortUrl": "http://localhost:8080/abc123", "originalUrl": "https://example.com", "createdAt": "2024-08-11T10:00:00", "expiresAt": "2024-09-10T10:00:00" }
- URL:
-
Redirigir a la URL original:
- URL:
/abc123 - Método:
GET - Descripción: Redirige a la URL original.
- URL:
Este repositorio es parte del proyecto de aprensizaje de
https://roadmap.sh/projects/url-shortening-service
Las contribuciones son bienvenidas. Si deseas contribuir, por favor abre un issue o envía un pull request.