Volver a la página principal
viernes 11 octubre 2024
54

Cómo devolver un ResponseEntity sin contenido con código de estado 204 en Spring Boot

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.

¿Qué es el código 204?

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.

Implementación de 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.

Ejemplo 1: Respuesta 204 en una operación de eliminación (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();
        }
    }
}

Explicación del código

  • 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.

Ejemplo 2: Respuesta 204 en una operación de actualización (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();
    }
}

Ejemplo 3: Respuesta 204 en un método 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();
}

Referencia

Para más detalles sobre la clase ResponseEntity y sus métodos en Spring, puedes consultar la documentación oficial de Spring Framework.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer