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