Código fuente del articulo:
Hola, en este tutorial te muestro como crear un servicio REST con Spring que implementa todas las operaciones GET, POST, PUT y DELETE con solo unas pocas anotaciones y nada de XML. El paso uno es configurar un ambiente para trabajar con Spring y crear un proyecto Spring Boot para eso pásate por este tutorial. Porque vamos a trabajar sobre el mismo proyecto.
https://programmingbabel.blogspot.com/2017/09/crear-una-aplicacion-con-spring-boot.html
una vez terminado ese tutorial tendrás una aplicación web, en eclipse, que utiliza Spring Boot y que se vera así:
así que antes de empezar algo de teoría.
los servicios RESTful (Representational State Transfer) son servicios web que utilizan HTTP como fue ideado desde un principio, es decir sin agregar un protocolo extra como SOAP y sin hundirse en un mar de XML. Así que la idea es exponer un recurso en una url y manipularlo utilizando las operaciones que ya están definidas en HTTP. las operaciones son crear, leer, actualizar y borrar es decir; PUT, GET, POST y DELETE. por lo general en los servicios RESTful se negocia utilizando Objetos definidos en el formato JSON que es una alternativa al XML mas ligera es decir si en xml tenias esto:
<Persona>
<Nombre>juan<Nombre/>
<Apellido>Perez<Apellido/>
<Persona/>
En JSON vas a tener esto
{"Persona":{"Nombre":"Juan", "Apellido":"Perez"}}
Sin mas teoría pasemos a la acción.
en nuestro proyecto ya creado crearemos una clase persona que vamos a utilizar para negociar en nuestro servicio.
public class Persona {
private String nombre, apellido;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
}
se vera así:
Ahora crearemos otra clase y la llamaremos ServicioPersonas esta sera la clase principal y sera la encargada de contener las operaciones, esta clase la marcaremos con la etiqueta @RestController. esta etiqueta le indicara a Spring que esta clase manejara las peticiones http hechas a la aplicación web:
package com.virtuallabs.spring;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ServicioPersonas {
}
se vera así:
La primer operación que agregaremos sera PUT, que nos permitirá actualizar o agregar nuevas personas, para esto añadimos un método putPersona y lo marcamos con la etiqueta @PutMapping("/put/{idPersona}"), el método se vera así
@PutMapping("/put/{idPersona}")
public Persona putPersona(@PathVariable int idPersona, @RequestBody Persona persona){
personas.put(idPersona, persona);
return persona;
}
y tendrá dos anotaciones mas
@RequestBody: esto quiere decir que también al hacer el llamado enviaremos un objeto JSON que se puede mapear a una clase de tipo persona.
La siguiente operación sera GET, que nos permitirá obtener personas. Para esto añadimos un método getPersona y lo marcamos con la etiqueta @GetMapping("/get") el método se vera así
@GetMapping("/get")
public Persona getPersona(@RequestParam("idPersona") int idPersona) {
return personas.get(idPersona);
}
y tendrá una anotación mas
@RequestParam("idPersona"): esta anotación indica que buscaremos un parámetro idPersona en la url es decir que al final nuestra url tendrá un /get?idPersona=1.
La siguiente operación sera POST, que nos permitirá agregar personas para esto añadimos un método putPersona y lo marcamos con la etiqueta @PostMapping("/post") el metodo se vera así
@PostMapping("/post")
public Persona postPersona(@RequestBody Persona persona) {
Random r = new Random();
personas.put(r.nextInt(), persona);
return persona;
}
y tendrá la ya ya conocida anotación @RequestBody.
Por ultimo tendremos el método Delete, que se encargara de borrar recursos. Para esto añadimos un método deletePersona y lo marcamos con la anotación @DeleteMapping("/delete/{idPersona}")
@DeleteMapping("/delete/{idPersona}")
public String deletePersona(@PathVariable int idPersona) {
try {
personas.remove(idPersona);
} catch (Exception e) {
return "Error";
}
return "Listo";
}
este método tendrá la etiqueta @PathVariable para indicar en la url el id de la persona a borrar.
Al final tendrás una clase así:
ahora a probar!!!
para esto te sugiero instalar un complemento de google chrome llamado Advanced REST client
Para probar primero desplegaremos nuestra aplicación como se muestra en las siguientes imágenes.
recuerda poner Content-Type: application/json en el contenido para indicar a la aplicación que le vas a enviar contenido en formato JSON
request
respuesta
Ahora un Put
request
respuesta
Ahora un get
request-respuesta
Ahora un Delete
request
respuesta
Y listo ya tienes los cuatro métodos principales para los servicios RESTful implementados, gracias por leer este tutorial ;).
Y de donde se saca el metodo " personas.put(idPersona, persona);" que tienes como clase?, porque no la pusiste
ResponderEliminar