Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Creo que falta algo en el método 'registrar'

Lo correcto sería:

    @Transactional
    @PostMapping
    public ResponseEntity<DatosDetalleMedico> registrar ...

Ya que regresa un 'DatosDetalleMedico' con la información del nuevo médico registrado en la base de datos.
¿No? Bueno, igual no hay tanto problema ya que el programa logra ejecutarse pero, ¿Qué opinan?

2 respuestas
solución!

¡Hola Yahadad, espero que estés bien!

Gracias por compartir tu duda. Entiendo que estás sugiriendo que el método registrar debería devolver un ResponseEntity<DatosDetalleMedico> para incluir la información del nuevo médico registrado. Tienes razón en que es una buena práctica devolver el objeto recién creado en el cuerpo de la respuesta cuando se utiliza el código HTTP 201.

En el contexto del curso, parece que el método registrar debería efectivamente devolver un ResponseEntity que incluya tanto el código 201 como el objeto DatosDetalleMedico en el cuerpo. Esto no solo confirma que el recurso fue creado exitosamente, sino que también proporciona al cliente los detalles del nuevo recurso.

Aquí tienes un ejemplo de cómo podría verse el método completo:

@PostMapping
public ResponseEntity<DatosDetalleMedico> registrar(@RequestBody @Valid DatosRegistroMedico datos, UriComponentsBuilder uriComponentsBuilder) {
    var medico = new Medico(datos);
    repository.save(medico);
    var uri = uriComponentsBuilder.path("/medicos/{id}").buildAndExpand(medico.getId()).toUri();
    return ResponseEntity.created(uri).body(new DatosDetalleMedico(medico));
}

Este método no solo guarda el nuevo médico, sino que también construye una URI para el recurso recién creado y devuelve un objeto DatosDetalleMedico en el cuerpo de la respuesta.

Espero que esta explicación te sea útil y que puedas implementar esta mejora en tu proyecto. ¡Bons estudos!

Gracias por atender mi duda, ingeniera Brenda.