Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Estandarizando retornos de API - No funcionaba: Lo que hice. ACTUALIZADO: Estaba mal - SOLUCIONADO.

POR FAVOR: Desestimen este post. Ya encontré mi error. Lo que había hecho estaba mal.

Para que el código me funcione tuve que hacer ciertos cambios y no sé si constituyen una buena práctica, pero fué la única forma en que logré que funcione:

En MedicoController:

    @PutMapping
    @Transactional
    public ResponseEntity actualizarMedico(@RequestBody @Valid DatosActualizarMedico datosActualizarMedico) {
        Medico medico = medicoRepository.getReferenceById(datosActualizarMedico.id());
        medico.actualizarDatos(datosActualizarMedico);
        return ResponseEntity.ok(new DatosRespuestaMedico(
                medico.getId(),
                medico.getNombre(),
                medico.getDocumento(),
                medico.getDireccion()));
    }

En DatosRespuestaMedico:

package med.voll.api.medico;

public record DatosRespuestaMedico(
        Long id,
        String nombre,
//        String email,
//        String telefono,
        String documento,
        med.voll.api.direccion.Direccion direccion
) {
    }

1 respuesta

¡Hola Mariana, espero que estés bien!

Entiendo que has encontrado la solución a tu problema, pero me gustaría ofrecerte una sugerencia para estandarizar los retornos de tu API Rest de una manera más eficiente.

En el método actualizarMedico de tu controlador, estás devolviendo un ResponseEntity con los datos del médico actualizado.

Sin embargo, sería una buena práctica devolver un objeto de respuesta que incluya un mensaje descriptivo junto con los datos del médico actualizado. Por ejemplo:

public ResponseEntity<RespuestaActualizacionMedico> actualizarMedico(@RequestBody @Valid DatosActualizarMedico datosActualizarMedico) {
    Medico medico = medicoRepository.getReferenceById(datosActualizarMedico.id());
    medico.actualizarDatos(datosActualizarMedico);
    RespuestaActualizacionMedico respuesta = new RespuestaActualizacionMedico("Médico actualizado exitosamente", 
        new DatosRespuestaMedico(
            medico.getId(),
            medico.getNombre(),
            medico.getDocumento(),
            medico.getDireccion()
        )
    );
    return ResponseEntity.ok(respuesta);
}

En este caso, RespuestaActualizacionMedico sería una clase que contiene un mensaje y los datos del médico actualizado. Esto proporcionaría una respuesta más clara y consistente a los consumidores de tu API.

Espero que esta sugerencia te sea útil para mejorar la estandarización de tus retornos en la API Rest. Si tienes alguna otra pregunta, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!