HATEOAS

A través de EntityModel y ModelAssembler, cada respuesta incluye un objeto _links con rutas útiles. Por ejemplo, al consultar los pagos (/api/v2/pagos), se agregan enlaces automáticos a:

  • El detalle de cada pago

  • La lista completa

  • El recurso actual (self)

Esto facilita que el cliente recorra la API sin conocer todas las URLs de antemano.

{
    "_embedded": {
        "pagoList": [
            {
                "id": 137,
                "idCurso": "CURSO-B000IT4T9Q",
                "fechaPago": "2025-06-26",
                "monto": 1056.41,
                "estadoPago": "COMPLETADO",
                "metodoPago": "jcb",
                "cupon": {
                    "id": 157,
                    "codigo": "80445944",
                    "descuento": 21.68,
                    "fechaExpiracion": "2025-07-15",
                    "estado": "ACTIVO"
                },
                "_links": {
                    "detalle_pago": {
                        "href": "http://localhost:8080/api/v2/pagos/137"
                    },
                    "lista_pagos": {
                        "href": "http://localhost:8080/api/v2/pagos"
                    }
                }
            },
            {
                "id": 138,
                "idCurso": "CURSO-B000NQLULE",
                "fechaPago": "2025-06-26",
                "monto": 4134.87,
                "estadoPago": "COMPLETADO",
                "metodoPago": "jcb",
                "cupon": {
                    "id": 158,
                    "codigo": "46737243",
                    "descuento": 46.86,
                    "fechaExpiracion": "2025-07-18",
                    "estado": "ACTIVO"
                },
                "_links": {
                    "detalle_pago": {
                        "href": "http://localhost:8080/api/v2/pagos/138"
                    },
                    "lista_pagos": {
                        "href": "http://localhost:8080/api/v2/pagos"
                    }
                }
            }
        ]
    },
    "_links": {
        "self": {
            "href": "http://localhost:8080/api/v2/pagos"
        }
    }
}

Last updated