Code Monkey home page Code Monkey logo

api_rest_springboot_postgresql_mysql's Introduction

Información

La API contiene:

  • CRUD de la entidad Empleado con Reportes en PDF y EXCEL.
  • Validaciones y Manejo de Errores, con respuesta en Json y código de estado personalizados para cada error.
  • Seguridad basica con Spring Security (Autorización y Autenticación por ROLES).
  • Conexion a dos Bases de Datos en simultáneo (PostgreSQL y MySQL).
  • Paginación.

Credenciales iniciales:

  • Username: kevinB, Password: admin -> roles: ADMIN, USER
  • Username: pedroC, Password: 123 -> roles: USER


◻️ Listar Empleado

Para listar los empleados registrados podemos usar de manera opcional los parametros:

  • page : página que se mostrará.
  • size : número de elementos por página.
  • sort : nombre de la propiedad perteneciente a la entidad, que se tomará para ordenar la lista.

Si no se añaden dichos parametros estos obtienen valores por defecto (page = 0, size = 3, sort = codEmpleado).

Request:

[ GET ]  http://localhost:8080/empleados
[ GET ]  http://localhost:8080/empleados?page=0&size=3&sort=nombre

Response: Estatus code: 200 OK

[
    {
        "codEmpleado": "EM10001",
        "distrito": {
            "codDistrito": "DI01",
            "nombreDistrito": "Comas"
        },
        "estado": {
            "codEstado": "ES2",
            "nombreEstado": "ACTIVO"
        },
        "nombre": "KEVIN",
        "apellidos": "B",
        "dni": "00000000",
        "direccion": "DIRECCION",
        "telefono": "9999999",
        "email": "[email protected]",
        "usuario": "kevinB",
        "contrasena": "$2a$10$Jtfxa0EuEjZrfQ4OvR4WbuqD00OBIfIp.5Sv33A7G8ya3xTI542nq",
        "roles": [
            {
                "codRol": "RL01",
                "nombreRol": "ROLE_ADMIN"
            },
            {
                "codRol": "RL02",
                "nombreRol": "ROLE_USER"
            }
        ]
    },
    // ...
]

◻️ Registrar Empleado

Para registrar un empleado, no se incluye el "codEmpleado" ni "roles" porque estos se obtienen de manera interna. Los campos "dni", "direccion", "telefono" y "email" son opcionales, pero si los incluimos en el Body deberan cumplir las resticciones respectivas.

Request:

[ POST ]  http://localhost:8080/empleados
{
	"codDistrito":  "DI02",
	"codEstado":    "ES2",
	"nombre":       "mateo",
	"apellidos":    "Castillo",
	"dni":          "22224444",
	"direccion":    "Av. Carlos Izaguirre 233",
	"telefono":     "3333444",
	"email":        "[email protected]",
	"usuario":      "mateoC",
	"contrasena":   "123"
}

Response: Estatus code: 201 Created

{
    // ... El Empleado con el mismo formato que se muestra al "Listar"
}

◻️ Actualizar Empleado

Para actualizar un empleado debemos enviar solo los campos que queremos modificar. Estos campos enviados tambien deben de cumplir con las restricciones.

Request:

[ PUT ]  http://localhost:8080/empleados/EM10003
{
    "codDistrito":  "DI05",
    "dni":          "11115555",
    "email":        "[email protected]"
}

Response: Estatus code: 200 OK

{
    // ... El Empleado actualizado con el mismo formato que se muestra al "Listar"
}

◻️ Eliminar Empleado

Para eliminar un empleado solo enviamos en la URL el codigo de un Empleado que se encuentre registrado.

Request:

[ DELETE ]  http://localhost:8080/empleados/EM10003

Response: Estatus code: 200 OK

◻️ Generar Reporte Empleado en PDF

Request:

[ GET ]  http://localhost:8080/empleados/rpt_PDF

Response: Estatus code: 200 OK

◻️ Generar Reporte Empleado en EXCEL

Request:

[ GET ]  http://localhost:8080/empleados/rpt_EXCEL

Response: Estatus code: 200 OK


Herramientas utilizadas:

  • IntelliJ IDEA [ ] como IDE principal para el desarrollo de la API.
  • PostgreSQL como motor de base de datos principal.
  • MySQL como motor de base de datos secundario.
  • Postman para probar la API.
  • JasperSoft Studio [ 6.19.0 ] para la creacion de plantillas para el reporte en PDF y EXCEL.
  • Visual Studio Code para la edición de este README.md.
  • Git Bash para subir y actualizar este repositorio.

Tecnologias y versiones:

  • OpenJDK 17 [ Amazon Corretto 17.0.5.8.1 LTS ]
  • Apache Maven [ 3.0.1 ]
  • Sprint Boot [ 3.0.5 ]
  • Spring Security
  • Hibernate (ORM)
  • JPQL
  • Lombok

api_rest_springboot_postgresql_mysql's People

Contributors

paledot01 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.