Capacitación Spring
Besysoft
VARIOS PARÁMETROS
Besysoft
Parámetros
Dentro de un solo método expuesto por
nuestra API podemos recibir la cantidad de
parámetros que necesitemos
Vamos a crear una calculador simple, que va a
recibir dos valores y realizar las cuatro
operaciones básicas, sumar, restar, multiplicar
y dividir. Tomemos como ejemplo la suma:
Como ilustra la imagen, a la anotación
@GetMapping podemos agregar tantos parámetros
como lo necesitemos, separando cada uno con “/”.
Múltiples parámetros.
Besysoft
@PathVariable
Nos da la posibilidad de extraer información
que es parte de la estructura de la URI pero
que no se trata como el típico par
“nombre=valor”.
En la practica, se puede usar de la manera vista y produciendo
el mismo resultado que la anotación @RequestParam.
Muchas veces se combinan ambas
Múltiples parámetros.
Por ejemplo
Besysoft
[Link]
@RequestParam
❖ Esta otra anotación nos permite recibir
parámetros desde un ruta mediante el
método GET, para trabajar con ellos
incluso poder emitir una respuesta que
dependa de los parámetros que sean
obtenidos
❖ Cada uno de los parámetros generalmente
se ubican en la URL después del signo de
pregunta “?” y están anidados por “&”
❖ Son enviados a través del par clave-valor o
nombre-valor
Múltiples parámetros.
Besysoft
CRUD
Besysoft
CRUD
La mayoría de las APIs, tienen asociadas las
cuatro operaciones y/o acciones que
representan el acrónimo CRUD:
➢ Create CRUD en HTTP
➢ Read
Los métodos que mas utilizaremos en Spring vía
➢ Update HTTP son:
➢ Delete
➢ POST: utilizado para crear un nuevo
registro.
➢ GET: utilizado para consultar información al
servidor.
➢ PUT: utilizado para actualizar por completo
un registro existente.
Operaciones CRUD. ➢ DELETE: utilizado para eliminar registro
existente.
Besysoft
En que ocasiones utilizar POST:
➢ Utilizando la anotación @PostMapping
generamos un endpoint sobre el método
HTTP POST.
➢ Nos permite poder ingresar parámetros
utilizando el HTTP BODY en formato JSON.
➢ Se utiliza @RequestBody para informar que
el argumento del método se va a asociar con
el HTTP BODY.
POST.
Besysoft
@ReqestBody
Utilizando dicha anotación, lo que logramos es
mapear el json y nos sirve para deserializar el
objeto competo a partir del cuerpo de la petición
Si contamos con la siguiente clase:
Y contamos con el siguiente método.
Spring en este caso nos inyectara en la variable user un objeto
de la clase User con sus atributos que están informados con lo
que venga en el cuerpo de esta petición.
POST.
Besysoft
Payload en el uso del POST
Como parte de una solicitud POST, se pueden
enviar una carga útil (o payload) de datos al
servidor en el cuerpo de la petición.
El contenido del cuerpo puede ser cualquier
objeto JSON valido, como por ejemplo el
siguiente:
{
"nombre" : "Juan Jose",
"apellido" : "Rodriguez",
"usuario" : "jjrodriguez",
"email" : "jjrodriguez@[Link]"
}
POST.
Besysoft
Uso de PUT
Es similar al uso del POST, con la diferencia
que podemos indicar por URL que registro
actualizar haciendo uso de parámetros.
Usando la anotación @PutMapping generamos
el endpoint para el método HTTP PUT.
Lo mas utilizado es @RequestBody para
informar que el argumento se va asociar al
HTTP BODY y @PathVariable como parámetro
indicando que registro actualizar.
PUT.
Besysoft
Uso de DELETE
Es utilizado para eliminar un registro existente, esto mismo se suele hacer
enviando por parámetro algún identificador del registro a eliminar.
Para establecer su endpoint se utiliza la anotación @DeleteMapping.
DELETE.
Besysoft
RESPONSE
Besysoft
Hasta el momento hemos trabajado en nuestros métodos
utilizando tipos de datos no complejos, es decir retornamos
datos del tipo Double, String y algún que otro objeto.
Spring autogenera una especie de Response para enviar dicha
información como respuesta a la petición solicitada.
Pero como podemos hacer que estas respuesta, transporten
algo mas de información enriqueciendo las mismas, como por
ejemplo informando el código de estado de la petición.
Spring nos provee de un objeto particular para poder
“personalizar” nuestras respuestas.
RESPONSE.
Besysoft
ResponseEntity
Representa la respuesta HTTP completa, código de estado
(status code), encabezados (headers) y cuerpo (body).
Como resultado, podemos usarlo para configurar
completamente nuestra respuesta HTTP.
RESPONSE.
POST (verbo)
/usuarios
➢ Usar sustantivos (no verbos). /crear-usuarios
➢ Usar plural.
➢ Responder con códigos HTTP GET (verbo)
adecuados. /equipos
/equipos/{id}
➢ JSON claros y no mas de tres /equipos/{id}/jugadores
niveles.
Buenas practicas.
Besysoft
ANNOTATIONS CHEAT
SHEET
Besysoft
Annotations vistas.
➢ @RequestParam: anotación que utiliza spring para pasar los parámetros de la URL
en los argumentos apropiados del método.
➢ @PostMapping: anotación que genera un endpoint sobre un método HTTP POST
➢ @PutMapping: anotación que genera un endpoint sobre un método HTTP PUT
➢ @DeleteMapping: anotación que genera un endpoint sobre un método HTTP
DELETE
➢ @RequestBody: anotación que se utiliza spring para parsear el HTTP BODY del
request al argumento del método.