En Spring Boot, se puede utilizar la clase ResponseEntity
para controlar el estado de las respuestas HTTP, como el código de estado, los encabezados y el cuerpo de la respuesta. Para devolver un ResponseEntity
con un código de estado 204 No Content, se debe crear una instancia de ResponseEntity
sin cuerpo y con el estado adecuado.
El código de estado 204 No Content indica que la solicitud se ha procesado correctamente, pero no hay contenido que devolver. Es comúnmente utilizado en respuestas a peticiones DELETE
, PUT
o en casos donde la operación se realizó con éxito, pero no se espera que el cliente reciba información adicional.
ResponseEntity
con código 204
Para devolver un ResponseEntity
con código 204, puedes usar el método estático ResponseEntity.noContent()
. A continuación, se muestran algunos ejemplos prácticos para utilizar esta característica en un controlador Spring Boot.
DELETE
)
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/usuarios")
public class UsuarioController {
@DeleteMapping("/{id}")
public ResponseEntity<Void> eliminarUsuario(@PathVariable Long id) {
// Lógica para eliminar el usuario por ID.
boolean eliminado = usuarioService.eliminarPorId(id);
if (eliminado) {
// Devuelve 204 No Content si la eliminación fue exitosa.
return ResponseEntity.noContent().build();
} else {
// Devuelve 404 Not Found si el usuario no fue encontrado.
return ResponseEntity.notFound().build();
}
}
}
ResponseEntity.noContent().build()
: Este método estático devuelve un ResponseEntity
con el código de estado 204 y sin cuerpo.
ResponseEntity.notFound().build()
: Se usa para devolver un 404 si el recurso no existe. No se devuelve contenido en el cuerpo de la respuesta.
PUT
)
En operaciones de actualización, cuando no se necesita devolver el recurso actualizado al cliente, el código 204 puede ser una opción adecuada.
@PutMapping("/{id}")
public ResponseEntity<Void> actualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) {
boolean actualizado = usuarioService.actualizarUsuario(id, usuario);
if (actualizado) {
// Si la actualización es exitosa, devuelve 204 No Content.
return ResponseEntity.noContent().build();
} else {
// Si no se encuentra el usuario, devuelve 404 Not Found.
return ResponseEntity.notFound().build();
}
}
POST
(sin necesidad de contenido en la respuesta)
En ciertos casos, después de realizar una operación POST
, es posible que no desees devolver un cuerpo en la respuesta:
@PostMapping("/procesar")
public ResponseEntity<Void> procesarSolicitud(@RequestBody Solicitud solicitud) {
solicitudService.procesar(solicitud);
return ResponseEntity.noContent().build();
}
Para más detalles sobre la clase ResponseEntity
y sus métodos en Spring, puedes consultar la documentación oficial de Spring Framework.
Jorge García
Fullstack developer