30.6 Desarrollo de API REST con Spring Boot: mapeo de rutas con @RestController y @RequestMapping
El desarrollo de API REST es una parte fundamental de la programación Java moderna y Spring Boot ofrece herramientas poderosas para hacer que este proceso sea eficiente y optimizado. En este capítulo, exploraremos cómo crear API REST con Spring Boot, centrándonos en el mapeo de rutas usando las anotaciones @RestController
y @RequestMapping
.
¿Qué es una API REST?
Antes de profundizar en la implementación, es importante comprender qué es una API REST. REST (Transferencia de estado representacional) es un estilo arquitectónico para sistemas distribuidos, y una API REST es una interfaz de programación de aplicaciones que se adhiere a este estilo. Permite la comunicación entre diferentes sistemas de software en Internet. Las API REST se basan en recursos y se accede a cada recurso a través de URL únicas. La comunicación se realiza generalmente mediante el protocolo HTTP.
Introducción a Spring Boot
Spring Boot es un proyecto de Spring Framework que tiene como objetivo simplificar el proceso de configuración y publicación de aplicaciones basadas en Spring. Ofrece una forma rápida de crear aplicaciones independientes que se pueden ejecutar fácilmente, lo que reduce la necesidad de configuración manual y optimiza el proceso de desarrollo.
@RestController y @RequestMapping
En el contexto de Spring Boot, @RestController
es una anotación que se utiliza para definir un controlador Spring MVC que sirve puntos finales de una API REST. Esta anotación es una especialización de @Controller
e indica que la clase manejará las solicitudes web. También garantiza que los datos devueltos por los métodos se escriban directamente en el cuerpo de la respuesta, normalmente en formato JSON o XML.
Por otro lado, @RequestMapping
es una anotación que se utiliza para asignar solicitudes web a métodos específicos en controladores. Se puede aplicar tanto a nivel de clase como de método y le permite configurar aspectos de la solicitud como la URL, el método HTTP (GET, POST, PUT, DELETE, etc.), encabezados y parámetros de solicitud.
Creando un controlador con @RestController
Para crear un controlador REST en Spring Boot, comience anotando una clase con @RestController
. Esto convierte la clase en un Spring Bean y le permite manejar solicitudes HTTP.
@RestController clase pública EjemploController { // Los métodos del controlador irán aquí }
Definición de rutas con @RequestMapping
Dentro del controlador, usted define métodos para manejar diferentes rutas. Cada ruta se puede asignar a un método usando @RequestMapping
. Puede especificar la ruta de la ruta, el método HTTP y otros detalles de la solicitud.
@RestController clase pública EjemploController { @RequestMapping(valor = "/ejemplo", método = RequestMethod.GET) cadena pública getExample() { devolver "datos de ejemplo"; } }
En el ejemplo anterior, un GET para "/ejemplo" devolverá la cadena "Datos de ejemplo".
Parámetros de ruta y solicitud
Con Spring Boot, puede capturar fácilmente parámetros de ruta y solicitud. Los parámetros de ruta son partes variables de la ruta URL y están anotados con @PathVariable
. Los parámetros de solicitud son valores pasados como parte de la cadena de consulta URL y están anotados con @RequestParam
.
@RestController clase pública EjemploController { @RequestMapping(valor = "/ejemplo/{id}", método = RequestMethod.GET) cadena pública getExampleById(@PathVariable("id") ID larga) { // Lógica para devolver un ejemplo basado en la identificación dada devolver "Datos de ejemplo con ID: " + id; } @RequestMapping(valor = "/ejemplo", método = RequestMethod.GET) public String getExampleWithParam(@RequestParam(nombre = "nombre", requerido = falso) Nombre de cadena) { // Lógica para devolver un ejemplo basado en el nombre de pila devolver "Datos de ejemplo con nombre: " + nombre; } }
Respuestas HTTP y códigos de estado
Controlar las respuestas HTTP y los códigos de estado es esencial para una API REST. Spring Boot hace esto fácil con la anotación @ResponseStatus
y la clase ResponseEntity
. Con @ResponseStatus
, puede configurar el código de estado de respuesta directamente en el método del controlador. Con ResponseEntity
, tienes un control más preciso sobre la respuesta, pudiendo definir encabezados, cuerpo y código de estado.
@RestController clase pública EjemploController { @RequestMapping(valor = "/ejemplo", método = RequestMethod.POST) @ResponseStatus(HttpStatus.CREADO) addExample public void(@Ejemplo de ejemplo de RequestBody) { // Lógica para agregar un nuevo ejemplo } @RequestMapping(valor = "/ejemplo/{id}", método = RequestMethod.PUT) entidadRespuesta pública<String> updateExample(@PathVariable("id") ID larga, @RequestBody Ejemplo ejemplo) { // Lógica para actualizar un ejemplo existente return ResponseEntity.ok("Ejemplo actualizado correctamente"); } }
Conclusión
El mapeo de rutas con @RestController
y @RequestMapping
en Spring Boot es un enfoque poderoso y flexible para desarrollar API REST. Con estas anotaciones, puede crear controladores que respondan a diferentes tipos de solicitudes HTTP, manejen parámetros de manera eficiente y controlen las respuestas con elegancia. Al dominar estos conceptos, estará bien equipado para crear API sólidas y escalables en Java.