Saltar a contenido

141. Servidor REST api en Spring Boot

141.1 Clases usadas con REST API

141.1.1 ResponseEntity

Se usa para representar toda la respuesta HTTP, incluyendo el cuerpo, los encabezados y el código de estado. Esto ofrece una manera más detallada y controlada de gestionar las respuestas en comparación con simplemente retornar un objeto o una cadena.

Características Principales de ResponseEntity * Código de Estado HTTP: Permite establecer el código de estado HTTP que será devuelto al cliente (por ejemplo, 200 OK, 404 Not Found, 500 Internal Server Error). * Encabezados HTTP: Puedes añadir encabezados HTTP personalizados a la respuesta. * Cuerpo de la Respuesta: Contiene el cuerpo de la respuesta que será enviado al cliente.

Ejemplo para crear

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public ResponseEntity<String> sayHello() {
        return new ResponseEntity<>("Hello, World!", HttpStatus.OK);
    }
}

En este ejemplo, el método sayHello retorna una cadena con el cuerpo de la respuesta y el código de estado 200 OK.

Usando métodos estáticos de ResponseEntity

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public ResponseEntity<String> sayHello() {
        return ResponseEntity.ok("Hello, World!");
    }
}

Retornar con encabezados personalizados

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public ResponseEntity<String> sayHello() {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Custom-Header", "foo");

        return new ResponseEntity<>("Hello, World!", headers, HttpStatus.OK);
    }
}

Con Retrofit utilizariamos la clase Call<T> para procesar estas respuesdtas