Contenido
Descripción
Publicar y consumir algunos métodos creados del API REST.
Publicar y Consumir
Usando CRUD
Simplemente usando los métodos que ya nos proporciona el CRUD
Crear Persona
Insertamos un nuevo registro a la tabla Persona.
- En la clase PersonaController
- Se mapea con /add
- Recibe los parámetros nombre, edad y sexo
- Se carga el Objeto Persona y se ejecuta la función save().
- Retorna el mensaje Agregado correctamente.
12345678910@RequestMapping("/add")public String addPersona(@RequestParam String nombre,@RequestParam int edad,@RequestParam String sexo) {Persona p = new Persona();p.setNombre(nombre);p.setEdad(edad);p.setSexo(sexo);personaRepository.save(p);return "Agregado correctamente";}
Consultar todas las Personas
Consultamos todos los registros de la tabla Persona.
- En la clase PersonaController
- Se mapea con /all
- No recibe parámetros
- Retorna el resultado de la función findAll().
1234@RequestMapping("/all")public Iterable<Persona> getPersona() {return personaRepository.findAll();}
Borra una Persona
Borramos un registro de la tabla Persona.
- En la clase PersonaController
- Se mapea con /delete
- Recibe el parámetro id
- Se carga el Objeto Persona y se ejecuta la función delete().
- Retorna el mensaje Borrado correctamente.
1234567@RequestMapping("/delete")public String deletePersona(@RequestParam int id) {Persona p = new Persona();p.setIdPersona(id);personaRepository.delete(p);return "Borrado correctamente";}
Resultado
Total de Personas
Total de registros de la tabla Persona.
- En la clase PersonaController
- Se mapea con /total
- No recibe parámetros
- Retorna el resultado de la función count().
1234@RequestMapping("/total")public long totalPersona() {return personaRepository.count();}
Creamos consultas propias
Podemos crear otras consultas de acuerdo a nuestras necesidades
Persona por tipo de sexo
Obtenemos las Personas por su tipo de sexo
- En la interface PersonaRepository agregamos la consulta que filtra por tipo de sexo
12@Query("select p from Persona p where p.sexo = ?1")Iterable<Persona> findBySexo(String sexo); - En la clase PersonaController
- Se mapea con /allBySexo
- Recibe el parámetro sexo
- Retorna el resultado de la función findBySexo().
1234@RequestMapping("/allBySexo")public Iterable<Persona> getPersonaBySexo(@RequestParam String sexo) {return personaRepository.findBySexo(sexo);}
Persona por tipo de sexo con paginado
Obtenemos las Personas por su tipo de sexo. Los resultados se muestran paginados.
- En la interface PersonaRepository agregamos la consulta que filtra por tipo de sexo y agrega paginado.
12@Query("select p from Persona p where p.sexo = ?1")Page<Iterable<Persona>> findBySexoPag(@Param("sexo") String sexo,Pageable pageable); - En la clase PersonaController
- Se mapea con /sexoPag
- Recibe los parámetros sexo, inicio y bloque. Estos 2 últimos parámetros para el paginado.
- Se pasa los parámetros de paginado a la función findBySexoPag()
- Retorna el resultado de la función findBySexoPag().
1234@RequestMapping(value="/sexoPag")public Page<Iterable<Persona>> personaPag(@RequestParam String sexo,@RequestParam int inicio,@RequestParam int bloque) {return personaRepository.findBySexoPag(sexo, new PageRequest(inicio, bloque));}
Resultado
Persona por tipo de sexo con paginado y ordenado por un campo
Obtenemos las Personas por su tipo de sexo. Los resultados se muestran paginados y ordenados por un campo.
- En la clase PersonaController
- Se mapea con /sexoOrder
- Recibe los parámetros sexo, inicio, bloque y orden.
- Se pasa los parámetros de paginado y orden a la función findBySexoPag()
- Retorna el resultado de la función findBySexoPag().
1234@RequestMapping(value="/sexoOrder")public Page<Iterable<Persona>> personaOrder(@RequestParam String sexo,@RequestParam int inicio,@RequestParam int bloque,@RequestParam String orden) {return personaRepository.findBySexoPag(sexo, new PageRequest(inicio, bloque,Sort.Direction.ASC, orden));}
Resultado
Otras opciones
Podemos crear otras consultas con otros métodos HTTP; POST, PUT, DELETE o PATCH. También enviando HEAD en la petición.
Agregar Persona con el método POST
1 2 3 4 5 6 7 8 9 |
@RequestMapping(value="/add",method=RequestMethod.POST) public String addPersonaPost(@RequestParam String nombre,@RequestParam int edad,@RequestParam String sexo) { Persona p = new Persona(); p.setNombre(nombre); p.setEdad(edad); p.setSexo(sexo); personaRepository.save(p); return "Agregado correctamente"; } |
Obtener Personas del sexo=M mediante HEAD
1 2 3 4 |
@RequestMapping(value="/sexo",headers={"sexo=M"}) public Iterable<Persona> personaM() { return personaRepository.findBySexo("M"); } |
Otros
Descargar Proyecto
Se puede descargar el proyecto completo de https://github.com/arielolivagh/gs-rest-service-complete/tree/v2.0