Este proyecto es una API REST desarrollada con Spring Boot que permite acortar URLs y realizar operaciones CRUD sobre estas URLs. También proporciona estadísticas de acceso para cada URL acortada.
- Crear una URL acortada.
- Redirigir a la URL original mediante su versión acortada.
- Recuperar metadatos de una URL acortada.
- Obtener estadísticas de acceso de una URL acortada.
- Actualizar una URL acortada.
- Eliminar una URL acortada.
- Java 21
- Maven 3.8+
- PostgreSQL 14+
-
Clona este repositorio:
git clone https://github.com/SoyElGary1/url_shortening_api
-
Ve al directorio del proyecto:
cd url_shortening
-
Configura la base de datos PostgreSQL:
- Crea una base de datos llamada
url_shortening_db
. - Actualiza las credenciales de la base de datos en
application.properties
si es necesario:spring.datasource.url=jdbc:postgresql://localhost:5432/url_shortening_db spring.datasource.username=postgres spring.datasource.password=1234
- Crea una base de datos llamada
-
Compila y ejecuta la aplicación:
mvn spring-boot:run
- URL:
/shorten/
- Método:
POST
- Cuerpo:
{ "url": "https://example.com" }
- Respuesta:
{ "id": 1, "url": "https://example.com", "shortUrl": "349936126", "createdAt": "2025-01-26T12:00:00", "updatedAt": "2025-01-26T12:00:00" }
- URL:
/redirect/{shortUrl}
- Método:
GET
- Descripción: Redirige automáticamente a la URL original asociada con la URL acortada.
- URL:
/shorten/{shortUrl}
- Método:
GET
- Respuesta:
{ "id": 1, "url": "https://example.com", "shortUrl": "349936126", "createdAt": "2025-01-26T12:00:00", "updatedAt": "2025-01-26T12:00:00" }
- URL:
/shorten/{shortUrl}/stats
- Método:
GET
- Respuesta:
{ "id": 1, "url": "https://example.com", "shortUrl": "349936126", "createdAt": "2025-01-26T12:00:00", "updatedAt": "2025-01-26T12:00:00", "accessCount": 42 }
- URL:
/shorten/{shortUrl}
- Método:
PUT
- Cuerpo:
{ "url": "https://updated-example.com" }
- Respuesta:
{ "id": 1, "url": "https://updated-example.com", "shortUrl": "349936126", "createdAt": "2025-01-26T12:00:00", "updatedAt": "2025-01-26T13:00:00" }
- URL:
/shorten/{shortUrl}
- Método:
DELETE
- Respuesta:
- 204 No Content si la URL fue eliminada correctamente.
- Spring Boot Starter Web: Para crear la API REST.
- Spring Boot Starter Data JPA: Para interactuar con la base de datos.
- PostgreSQL Driver: Para conectar con PostgreSQL.
- Spring Boot Starter Validation: Para validar datos de entrada.
- Springdoc OpenAPI Starter WebMVC UI: Para generar una interfaz gráfica de la documentación de la API con Swagger UI.
- Springdoc OpenAPI Starter WebMVC API: Para exponer la documentación OpenAPI de la API.
La API incluye documentación generada automáticamente con Springdoc OpenAPI. Para acceder a la interfaz Swagger UI, visita la siguiente URL después de iniciar la aplicación:
http://localhost:8080/swagger-ui/index.html
La configuración de la base de datos se encuentra en el archivo application.properties
:
spring.datasource.url=jdbc:postgresql://localhost:5432/url_shortening_db
spring.datasource.username=postgres
spring.datasource.password=1234
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
Desarrollado por [SoyElGary1].