Capa controlador de un proyecto Spring Boot

Capa controlador de un proyecto Spring Boot

Este artículo continua la serie iniciada en el primer artículo.

En este artículo vamos a presentar la implementación de la capa controlador de la aplicación. Entendemos como controlador a la capa de una aplicación que responde a eventos e invoca peticiones a la capa modelo. En nuestro ejemplo, los controladores están bajo el paquete controller y tienen las siguientes características:

  1. Están anotados con @Controller (o @RestController)
  2. Atienden peticiones bajo una ruta definida en la anotación @RequestMapping
  3. Su nombre termina en Controller
  4. Suelen tener inyectados (con anotación @Autowired) el servicio relacionado al que acceden
  5. Responden a diferentes métodos HTTP definidos por la anotación @GetMapping

Diferenciamos, dependiendo de la naturaleza de los eventos, entre Controlador Web y Controlador API.

Controlador Web

Responde a eventos lanzados por el usuario desde la web. Un ejemplo es el controlador web de administración de usuarios. En él hay un único método que lo que hace es obtener todos los usuarios y devolverlos a una vista. Esta comunicación se realiza a través del enlace de propiedades en el objeto del modelo (org.springframework.ui.Model).
Para lanzar este invocación basta con lanzar una petición GET a la página de administración de usuarios, o, en otras palabras más sencillas, acceder a dicha URL desde el navegador.

Controlador API

Define un API Rest y por lo tanto responde a diferentes tipos de peticiones. Útil para comunicar e integrar nuestra aplicación con otros sistemas como por ejemplo una aplicación móvil. Un ejemplo (análogo al anterior) sería el controlador API de administración de usuarios. En él hay poco más que un CRUD completo de Usuario, permitiendo, por lo tanto, crear, leer, actualizar y borrar usuarios.
Algunas de sus características son:

  1. A diferencia de los controladores web, estos están anotados por @RestController.
  2. Devuelven una objeto genérico de respuesta (org.springframework.http.ResponseEntity) que contiene, a su vez, más información propia de la petición.
  3. Admite diferentes tipos de parámetros:
    1. @RequestParam: por ejemplo, el parámetro page en /api/admin/users?page=1
    2. @PathVariable: por ejemplo, el identificador de usuario 3 en /api/admin/users/3/sendwelcomeemail
    3. @RequestBody: por ejemplo, el cuerpo de la petición POST de creación de usuario /api/admin/users

Para explotar/visualizar estos datos es bueno verlo con un ejemplo. Podemos verlo con Postman o directamente con una petición cURL. Podemos importar la petición cURL directamente en Postman o ejecutar en la consola la siguiente petición para obtener los usuarios:

curl --location --request GET 'http://localhost:8080/application-4.0.5/api/admin/users' \
--header 'Content-Type: application/json' \
--header 'Accept: ' \
--header 'Authorization: Bearer <my_token>'
</my_token>

Otro ejemplo de petición, esta sin autenticación, sería, por ejemplo, esta:

curl --location --request GET 'http://localhost:8080/application-4.0.5/api/version' \
--header 'Content-Type: application/json'

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

« »