| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Este proyecto consiste en una API REST desarrollada en Java con Spring Boot, que permite gestionar una base de datos relacional MySQL con clientes y pedidos. Se han seguido buenas prácticas como arquitectura en capas, uso de JPA con Hibernate, uso de DTOs con MapStruct, pruebas unitarias/integración y documentación OpenAPI.
| Herramienta | Uso principal |
|---|---|
| ☕ Java 17 | Lenguaje principal |
| 🌱 Spring Boot | Framework principal |
| 🛢️ Hibernate (JPA) | Persistencia ORM |
| 🐬 MySQL | Base de datos relacional |
| 🧪 JUnit + Mockito | Pruebas unitarias e integración |
| 🔧 Maven | Gestión de dependencias |
| 📄 Swagger UI | Documentación de API REST |
| 🔄 MapStruct | Conversión entre entidades y DTOs |
| 📝 DTOs | Objetos de transferencia de datos entre API y capas internas |
src/
├── main/
│ └── java/
│ └── com/raulpar/springclientesapi/
│ ├── controller/ → Controladores REST (API pública)
│ │ ├── ClienteController.java
│ │ └── PedidoController.java
│ │
│ ├── dto/ → Data Transfer Objects (DTOs)
│ │ ├── ClienteInputDto.java
│ │ ├── ClienteOutputDto.java
│ │ ├── ClienteOutputDetailDto.java
│ │ ├── PedidoCreateDto.java
│ │ └── PedidoDto.java
│ │
│ ├── mapper/ → Clases para convertir entre entidades y DTOs (MapStruct)
│ │ ├── ClienteMapper.java
│ │ └── PedidoMapper.java
│ │
│ ├── service/ → Lógica de negocio
│ │ ├── ClienteService.java
│ │ └── PedidoService.java
│ │
│ ├── repository/ → Acceso a datos con Spring Data JPA
│ │ ├── ClienteRepository.java
│ │ └── PedidoRepository.java
│ │
│ ├── model/ → Entidades JPA que representan la base de datos
│ │ ├── Cliente.java
│ │ └── Pedido.java
│ │
│ └── SpringClientesApiApplication.java
│
└── test/
└── java/
└── com/raulpar/springclientesapi/
├── controller/ → Tests de controladores (MockMvc)
│ ├── ClienteControllerTest.java
│ └── PedidoControllerTest.java
│
└── service/
├── unit/ → Tests unitarios de servicios
│ ├── ClienteServiceUnitTest.java
│ └── PedidoServiceUnitTest.java
│
└── integration/ → Tests de integración de servicios
├── ClienteServiceIntegrationTest.java
└── PedidoServiceIntegrationTest.java
Puedes probar los endpoints usando tu navegador, Swagger o Postman. A continuación los principales:
| Método | URL | Descripción |
|---|---|---|
| GET | http://localhost:8080/api/clientes | Obtener todos los clientes |
| GET | http://localhost:8080/api/clientes/{id} | Obtener cliente por su ID |
| GET | http://localhost:8080/api/clientes/dni/{dni} | Buscar cliente por DNI |
| PUT | http://localhost:8080/api/clientes/{id} | Actualizar cliente por su ID |
| POST | http://localhost:8080/api/clientes | Crear un nuevo cliente |
| DELETE | http://localhost:8080/api/clientes/{id} | Borrar cliente por su ID |
| GET | http://localhost:8080/api/pedidos | Obtener todos los pedidos |
| GET | http://localhost:8080/api/pedidos/{id} | Obtener pedido por su ID |
| POST | http://localhost:8080/api/pedidos | Crear un nuevo pedido |
| DELETE | http://localhost:8080/api/pedidos/{id} | Borrar pedido por su ID |
| GET | http://localhost:8080/api/pedidos/fecha?fecha=YYYY-MM-DD | Consultar pedidos por fecha |
Para separar la entidad de la base de datos de los datos expuestos a la API, se utilizan DTOs junto con MapStruct para la conversión automática:
MapStruct se encarga de:
Esto permite:
GET /api/clientes mostrando todos los clientes registrados en Swagger UI.
GET /api/pedidos/fecha?fecha=2025-08-23
Test unitario de la clase PedidoService
Clase ClienteController mostrando endpoints de la API y cómo se gestionan
git clone https://github.com/raulparamio/SpringClientesAPI.gitmvn clean spring-boot:runPuedes levantar la aplicación y la base de datos MySQL con Docker Compose de forma sencilla.
docker-compose up --build
docker-compose down| Back | FazBrowse Home | New Git URL |