Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

[Duda] Spring Boot 3: desarrollar una API Rest en Java (Clase 3 Request GET)

Diego Arguelles Rojas Muy agradecido por todo el conocimiento!

Ayuda con esta duda que no he podido resolver: ( Curso: Spring Boot 3 desarrollar una API Rest en Java (Clase 3 Request GET)

Con este metodo puedo realizar la consulta de todos mis datos en un archivo Json

 @GetMapping()

    public List<Medico> listado(){
        return medicoRepository.findAll();
    }

Mi duda es como puedo aplicar poder filtrar con ID, Con el fin de solo obtener un dato especifico de mi Json

Consultando en la web puedo aplicar (?ID=1) pero no logro tener el resultado con el filtro, Siempre obtengo todos los datos :/ Muy agradecido con la ayuda que me puedas brindar!

5 respuestas

Con esta anotación @JsonIgnore Ignora atributos en el JSON compañero. Si no es así me ayudaría siendo un poco más especifico para poder ayudarle.

Estimado Franklin Freddy Gamboa muchas gracias por la respuesta, Para ser mas específicos requiero poder realizar esto:

Tengo una pagina local host que obtiene estos datos por ejemplo:

https://jsonplaceholder.typicode.com/users

Obtengo toda la información del Json

Si modifico la consulta con https://jsonplaceholder.typicode.com/users?id=1 Colocando al final ?id=1 obtengo solo la información que tiene el id 1

Cuando realizo esto en mi servidor SprintBoot el cual realice en el Curso: Spring Boot 3 desarrollar una API Rest en Java (Clase 3 Request GET) obtengo toda la informacion, Aun asi cuando le digo ?id=1, Mi servidor simplemente lista todos los datos...

Descripción del error

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Con este codigo listas medicos por ID me informas si te sirve y cumpli con tus objetivos gracias compañero

@GetMapping
 public Page<DatosListadoMedico> ListadoMedicos(@RequestParam("id") Long id, Pageable paginacion) {
     Page<Medico> medicoPage = medicoRepository.findAll(paginacion);
     List<DatosListadoMedico> listadoMedicos = medicoPage.stream()
             .filter(medico -> medico.getId().equals(id))
             .map(DatosListadoMedico::new)
             .collect(Collectors.toList());
     return new PageImpl<>(listadoMedicos, paginacion, listadoMedicos.size());
 }

Esto lo realizas en medicocontroller

No olvides importar

import java.util.List;
import java.util.stream.Collectors;

Alguna duda me puedes consultar

Hola Andres,

Para hacer un GET por ID sería con:

@GetMapping("{id}")
@ResponseStatus( code = HttpStatus.OK)
public Medico findById(@PathVariable Integer id){
     return medicoRepository.findById(id).orElse(null);
}

Recuerda siempre regresar un Status en cada servicio REST.

El Page y Pageable es para jacer paginación, no para regresar objeto por Id y para esto necesitas hacer la logica de negocio en tu capa servicio con :

Page pageMedico(Pageable pageable);