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.
@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().
@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.
@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().
@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
@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().
@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.
@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().
@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().
@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
@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
@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





