Api Rest para la Aplicación Electro Things acerca de Productos Electrónicos con Spring Boot, Spring MVC, Spring Security, JWT, Spring Data MongoDB, SpringFox, Swagger UI, Api Highchart, Maven, Lombok, Log4j, Git, MongoDBCompass, MongoDB y Otras Tecnologías.
- Repositorio AppElectroThings_Angular_SpringBoot_MongoDB
- Repositorio db_ElectroThings_MongoDB
- PlayList del Proyecto
Ver
1.0) Descripción 🔝
Ver
- Se Desarrollan Clases Específicas para el Manejo de Excepciones para cada Servicio , como también un manejador de excepciones y validaciones por campos de beans.
- Todas las funcionalidades tienen generación de logs en el Server para los errores y excepciones personalizadas.
- Se incluye documentación completa de la Api con open-api para la visualización con swagger-ui, las anotaciones de open-api se aplican junto con los códigos de respuesta de tipo HTTP para cada función en los respectivos controllers.
- Se desarrolla toda la funcionalidad para las Operaciones CRUD, como así también paginados y funcionalidades para uso de filtros de búsqueda de productos desde el frontend.
- Se separa la capa de seguridad para la autenticación , implementando Spring Security y JWT. Además de realizar las operaciones CRUD para usuarios se aplica login y signin para la capa de presentación.
- También se desarrollan los métodos de búsquedas independientes de tipo Like para todos los campos, tanto de usuarios como productos.
- Los objetos de tipo getBy se manipulan como paginados, salvo los getById y Optional que se requiere un response por objeto y no una E.D como de tipo lista, stream, etc.
- Entre Otros.
- Se pone a disposición todos los recursos anteriores para productos y usuarios.
1.1) Ejecución del Proyecto 🔝
Ver
- Descargamos MongoDB compass para ejecutar los servicios de Mongodb.
- Abrimos una terminal y clonamos el repo de base de datos.
- Creamos una collection e importamos el doc json (toda la data de nuestra db). Para más info. consultar repositorio respectivo
- Descargamos Spring tool suite 4
- Desde sts u otro ide abrimos una terminal y creamos un entorno de trabajo o workspace.
- Clonar el Proyecto
git clone https://github.com/andresWeitzel/ApiRest_ElectroThingsV1_SpringBoot_MongoDB
- Click der sobre el proyecto --> Run as --> Spring Boot App
- Ya tenemos corriendo nuestra api desde tomcat. El url de la app para la ejecución de los endpoint's lo visualizamos desde consola.
1.2) Patrones de Diseño 🔝
Ver
Patrón de Diseño | Finalidad |
---|---|
DAO | Uso de interfaces entre la aplicación y el almacenamiento de datos. |
MVC | Separación y Representación de los Datos, Manejo de errores, Escalabilidad, etc |
DTO | Transferencia de objectos separando la capa de acceso a datos |
Dependency Inyection | Uso de funcionalidades requeridas de clases a través de inyección |
1.3) Tecnologías 🔝
Ver
Tecnologías | Versión | Finalidad |
---|---|---|
Java | 12.0.2 | JDK |
Spring Tool Suite 4 | 4.9.0 | IDE |
Spring Boot | 2.6.4 | Framework |
Spring Boot Data JPA | 2.6.3 | Mapeo de objetos y persistencia en la db |
Spring Validation | 2.7 | Anotations para Validaciones |
Spring Security | 2.6.7 | Módulo de Seguridad de Spring |
Json Web Token | 0.9.1 | Manejo de Token's de Seguridad |
Lombok | 1.18.22 | Automatización de Código |
Open-Api y UI Swagger | 1.6.4 | Documentación de la Api |
UI Swagger | 1.6.4 | Visualización y Gestión de la Api |
Maven | 4.0.0 | Gestor de Proyectos |
Postman | 9.1.1 | Visualización y Gestión de la Api |
MongoDB | 5.0 | Base de Datos |
MongoDB Compass | 1.31.2 | Gestor para MongoDB |
CMD | 10 | Símbolo del Sistema para linea de comandos |
GNU bash / Terminal | 4.4.23 | Bash / Terminal para el manejo e implementación de Git. |
Git | 2.29.1 | Control de Versiones |
1.4) Dependencias Maven 🔝
Ver
Dependencia Maven | Versión | Finalidad |
---|---|---|
spring-boot-starter-data-jpa | 2.6.7 | Api de JpaRepository para el manejo de métodos |
spring-boot-starter-test | 2.6.7 | Para Testing |
spring-boot-starter-web | 2.6.7 | Se agrega toda la configuración web automáticamente de Maven a Spring |
spring-boot-starter-validation | 2.7.0 | Validación de Annotations |
spring-boot-devtools | 2.6.7 | Herramientas para el Manejo de Spring Boot |
spring-boot-starter-security | 2.6.7 | Módulo de Seguridad de Spring |
jjwt | 0.9.1 | Manejo de Token's |
nimbus-jose-jwt | 9.22 | Refresh Token |
jaxb-api | 4.0 | Serialización de Objetos Java a XML |
jackson-databind | 4.0 | Serialización de Objetos Java a JSON |
javax-annotation-api | 4.0 | Api para la lectura de annotations |
springfox-boot-starter | 3.0.0 | Doc Api |
springfox-swagger-ui | 3.0.0 | Doc Api |
spring-boot-starter-data-mongodb | 2.6.7 | Manejo de SpringDataMongoDB con los métodos del Repository y anotations |
springdoc-openapi-ui | 1.6.4 | Plantillas para el Front |
spring-boot-devtools | 2.6.7 | Herramientas para el Manejo de Spring Boot |
lombok | 1.18.22 | Dependencia para la automatización de Código |
1.5) Descargas 🔝
2.0) EndPoints 🔝
Ver
- http://localhost:8098/api/v1/auth/login (Autenticación)
- http://localhost:8098/api/v1/auth/signin (Registro)
- http://localhost:8098/api/v1/productos/ (Agregar)
- http://localhost:8098/api/v1/productos/{id} (Editar)
- http://localhost:8098/api/v1/productos/{id} (Eliminar)
- http://localhost:8098/api/v1/productos/listado (Listado Paginado)
- http://localhost:8098/api/v1/productos/last-producto (Último Producto)
- http://localhost:8098/api/v1/productos/listado-filter/{filtro} (Listado paginado con filtro)
- http://localhost:8098/api/v1/productos/codigo/{codigo} (Listado paginado según su código)
- http://localhost:8098/api/v1/productos/nombre/{nombre} (Listado paginado según su nombre)
- http://localhost:8098/api/v1/productos/descripcion/{descripcion} (Listado paginado según su descripción)
- http://localhost:8098/api/v1/productos/categoria/{categoria} (Listado paginado según su categoria)
- Revisar Swagger para visualizar el resto de los endpoints
- http://localhost:8098/api/v1/admin/usuarios/ (Agregar)
- http://localhost:8098/api/v1/admin/usuarios/{id} (Editar)
- http://localhost:8098/api/v1/admin/usuarios/{id} (Eliminar)
- http://localhost:8098/api/v1/admin/usuarios/listado (Listado)
2.1) Recursos y Servicios 🔝
Ver
3.0) Prueba de Funcionalidad 🔝
Ver
3.1) Referencias 🔝
Ver
- Api Rest Spring Boot Mongodb
- Api Rest Guía Spring Boot Mongodb Codigo
- Tutorial MongoDB con Spring Boot
- Config Mongo y Spring Boot
- Config Swagger
- Generar doc con swagger
- Api Response con swagger
- Códigos HTTP de respuestas desarrollar en apis
- Implementación de Spring Security y JWT Youtube
- Implementación Spring Security
- Tutorial doc open-api