Spring Boot

SpringBoot

Tutorial SpringBoot: Controladores Spring REST

Spring Boot controladores REST: creación y uso. Domina la creación y uso de controladores REST en Spring Boot con ejemplos prácticos y detallados.

Introducción

El término REST en "Controlador Spring REST" se refiere a "Representational State Transfer", que es un conjunto de principios de diseño para desarrollar servicios web. Estos servicios web permiten a los clientes interactuar con los recursos del servidor mediante operaciones HTTP estándar como:

  • GET (para obtener un recurso)
  • POST (para crear un nuevo recurso)
  • PUT (para actualizar un recurso existente)
  • DELETE (para eliminar un recurso)

REST es ampliamente utilizado en la construcción de aplicaciones web debido a su simplicidad, escalabilidad y compatibilidad con los protocolos de internet.

¿Qué es un Controlador Spring REST?

En Spring un controlador REST es una clase en Java anotada con @RestController, que indica a Spring que esta clase va a funcionar como un controlador que manejará las solicitudes HTTP entrantes y enviará respuestas HTTP.

Un controlador REST puede tener uno o más métodos, cada uno de los cuales está diseñado para manejar una operación HTTP específica.

Cada uno de estos métodos se anota con una anotación correspondiente como @GetMapping, @PostMapping, @PutMapping o @DeleteMapping, que mapean la operación HTTP a ese método específico.

Un aspecto crucial de los controladores Spring REST es que los datos de respuesta se convierten automáticamente al formato apropiado (generalmente JSON o XML) antes de enviarse al cliente. Esto se debe a la anotación @RestController, que es una combinación de las anotaciones @Controller y @ResponseBody. La anotación @ResponseBody indica a Spring que debe convertir automáticamente el valor devuelto por el método del controlador en una representación adecuada del recurso y enviarla en el cuerpo de la respuesta HTTP.

Por tanto, un Controlador Spring REST es una forma rápida y flexible de crear servicios web RESTful con Spring, permitiendo una fácil interacción entre los clientes y los recursos del servidor.

Configuración

Para configurar un controlador REST en una aplicación Spring Boot, hay que seguir ciertos pasos que permitirán que la aplicación maneje las solicitudes HTTP y responda adecuadamente.

Spring Boot también integra automáticamente los controladores REST con el servidor web incorporado (por defecto, Tomcat). Esto significa que no es necesario configurar manualmente un servlet para manejar las solicitudes HTTP y enrutarlas a los controladores REST como podría hacerse con Java EE / Jakarta EE. Spring Boot lo hace automáticamente.

Dependencias

Primero, es esencial incluir las dependencias necesarias en el archivo pom.xml si se está utilizando Maven, o build.gradle si se está utilizando Gradle. La dependencia más crucial para una aplicación web Spring Boot es spring-boot-starter-web, que incluye Spring MVC y Tomcat, junto con otras dependencias útiles.

En Maven, la dependencia se agrega de la siguiente manera:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

En Gradle, se agrega de la siguiente manera:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

Creación de un Controlador REST

Una vez que las dependencias están en su lugar, el siguiente paso es crear un controlador REST. Esto implica crear una clase Java y anotarla con @RestController. Esta anotación le dice a Spring que esta clase es un controlador que puede manejar las solicitudes HTTP.

Aquí se muestra un ejemplo de cómo se vería un controlador REST simple:

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class MiControlador {

    @GetMapping("/saludo")
    public String saludo() {
        return "Hola Mundo!";
    }
}

En este ejemplo, MiControlador es un controlador REST que manejará las solicitudes GET a la ruta "/saludo". Cuando se realiza una solicitud GET a esta ruta, el método saludo() se ejecutará y responderá con la cadena "Hola Mundo!".

Trabajando con Parámetros

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class StringParameterController {

    @GetMapping("/greet/{name}")
    public String greet(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

En el anterior ejemplo se accede a la url http://localhost:8080/greet/prueba y hará que el controlador reciba la palabra prueba.

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LongParameterController {

    @GetMapping("/square/{number}")
    public Long square(@PathVariable Long number) {
        return number * number;
    }
}

En el anterior ejemplo se accede a la url http://localhost:8080/square/2 y hará que el controlador reciba un número.

Retorno de datos

Los métodos del controlador pueden retornar datos directamente. Los datos retornados se convierten automáticamente al formato apropiado (normalmente JSON) antes de enviarse en la respuesta HTTP. Esto es manejado por Spring gracias a la anotación @RestController.

En resumen, la creación y uso de controladores en Spring Boot implica definir una clase controladora, anotarla con @RestController, definir métodos para manejar diferentes tipos de solicitudes HTTP, trabajar con parámetros según sea necesario, y retornar datos que se enviarán en la respuesta HTTP.

Certifícate en SpringBoot con CertiDevs PLUS

Ejercicios de esta lección Controladores Spring REST

Evalúa tus conocimientos de esta lección Controladores Spring REST con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Web y Test Starters

Spring Boot
Puzzle

Entidades JPA

Spring Boot
Test

Repositorios reactivos

Spring Boot
Test

Inserción de datos

Spring Boot
Test

Borrar datos de base de datos

Spring Boot
Test

Controladores Spring MVC

Spring Boot
Código

Backend API REST con Spring Boot

Spring Boot
Proyecto

Operadores Reactivos

Spring Boot
Puzzle

Controladores Spring REST

Spring Boot
Código

Uso de Spring con Thymeleaf

Spring Boot
Puzzle

Crear entidades JPA

Spring Boot
Código

Registro de usuarios

Spring Boot
Test

CRUD y JPA Repository

Spring Boot
Puzzle

Anotaciones y mapeo en JPA

Spring Boot
Puzzle

Integración con Vue

Spring Boot
Test

Consultas JPQL con @Query en Spring Data JPA

Spring Boot
Test

Open API y cómo agregarlo en Spring Boot

Spring Boot
Puzzle

Uso de Controladores REST

Spring Boot
Puzzle

API Specification

Spring Boot
Puzzle

Inyección de dependencias

Spring Boot
Test

Introducción a Spring Boot

Spring Boot
Test

Consultas JPQL con @Query en Spring Data JPA

Spring Boot
Puzzle

API Query By Example (QBE)

Spring Boot
Puzzle

Inyección de dependencias

Spring Boot
Código

Vista en Spring MVC con Thymeleaf

Spring Boot
Test

Servicios en Spring

Spring Boot
Código

Configuración de Vue

Spring Boot
Puzzle

Integración con Angular

Spring Boot
Test

API Query By Example (QBE)

Spring Boot
Test

API Specification

Spring Boot
Test

Controladores MVC

Spring Boot
Test

Métodos find en repositorios

Spring Boot
Test

Repositorios Spring Data

Spring Boot
Test

Inyección de dependencias

Spring Boot
Puzzle

Data JPA y Mail Starters

Spring Boot
Test

Configuración de Angular

Spring Boot
Puzzle

Controladores Spring REST

Spring Boot
Test

Configuración de Controladores MVC

Spring Boot
Puzzle

Asociaciones de entidades JPA

Spring Boot
Código

Actualizar datos de base de datos

Spring Boot
Test

Identificadores y relaciones JPA

Spring Boot
Puzzle

Verificar token JWT en peticiones

Spring Boot
Test

Login de usuarios

Spring Boot
Test

Integración con React

Spring Boot
Test

Configuración de React

Spring Boot
Puzzle

Asociaciones en JPA

Spring Boot
Test

Consultas JPQL

Spring Boot
Código

Todas las lecciones de SpringBoot

Accede a todas las lecciones de SpringBoot y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Spring Boot

Spring Boot

Introducción Y Entorno

Spring Boot Starters

Spring Boot

Introducción Y Entorno

Inyección De Dependencias

Spring Boot

Introducción Y Entorno

Controladores Spring Mvc

Spring Boot

Spring Web

Vista En Spring Mvc Con Thymeleaf

Spring Boot

Spring Web

Controladores Spring Rest

Spring Boot

Spring Web

Open Api Y Cómo Agregarlo En Spring Boot

Spring Boot

Spring Web

Servicios En Spring

Spring Boot

Spring Web

Crear Entidades Jpa

Spring Boot

Persistencia Con Spring Data

Asociaciones De Entidades Jpa

Spring Boot

Persistencia Con Spring Data

Repositorios Spring Data

Spring Boot

Persistencia Con Spring Data

Métodos Find En Repositorios

Spring Boot

Persistencia Con Spring Data

Inserción De Datos

Spring Boot

Persistencia Con Spring Data

Actualizar Datos De Base De Datos

Spring Boot

Persistencia Con Spring Data

Borrar Datos De Base De Datos

Spring Boot

Persistencia Con Spring Data

Consultas Jpql Con @Query En Spring Data Jpa

Spring Boot

Persistencia Con Spring Data

Api Query By Example (Qbe)

Spring Boot

Persistencia Con Spring Data

Repositorios Reactivos

Spring Boot

Persistencia Con Spring Data

Api Specification

Spring Boot

Persistencia Con Spring Data

Integración Con React

Spring Boot

Integración Frontend

Integración Con Vue

Spring Boot

Integración Frontend

Integración Con Angular

Spring Boot

Integración Frontend

Registro De Usuarios

Spring Boot

Seguridad Con Spring Security

Login De Usuarios

Spring Boot

Seguridad Con Spring Security

Verificar Token Jwt En Peticiones

Spring Boot

Seguridad Con Spring Security

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender qué son los Controladores Spring REST y su papel en una aplicación Spring Boot.
  2. Aprender a configurar y utilizar Controladores Spring REST, incluyendo la definición de rutas, manejo de diferentes tipos de solicitudes HTTP, y el trabajo con parámetros de solicitud.
  3. Entender cómo los Controladores Spring REST se integran con el resto de una aplicación Spring Boot y cómo interactúan con otras características como la inyección de dependencias y la seguridad.
  4. Ser capaz de diseñar y construir Controladores Spring REST efectivos para manejar las necesidades específicas de su aplicación.