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