Saltar al contenido

¿Cuál es la mejor manera de devolver diferentes tipos de ResponseEntity en Spring MVC o Spring-Boot?

Solución:

Recomiendo usar Spring’s @ControllerAdvice para manejar errores. Lea esta guía para obtener una buena introducción, comenzando en la sección denominada “Manejo de errores de Spring Boot”. Para una discusión en profundidad, hay un artículo en el blog Spring.io que se actualizó en abril de 2018.

Un breve resumen de cómo funciona esto:

  • Su método de controlador solo debería regresar ResponseEntity<Success>. No será responsable de devolver respuestas de error o excepción.
  • Implementarás una clase que maneja excepciones para todos los controladores. Esta clase se anotará con @ControllerAdvice
  • Esta clase de aviso del controlador contendrá métodos anotados con @ExceptionHandler
  • Cada método de manejo de excepciones se configurará para manejar uno o más tipos de excepciones. Estos métodos son donde especifica el tipo de respuesta para errores
  • Para su ejemplo, declararía (en la clase de aviso del controlador) un método de manejo de excepciones para el error de validación. El tipo de retorno sería ResponseEntity<Error>

Con este enfoque, solo necesita implementar el manejo de excepciones de su controlador en un solo lugar para todos los puntos finales en su API. También facilita que su API tenga una estructura de respuesta de excepción uniforme en todos los puntos finales. Esto simplifica el manejo de excepciones para sus clientes.

Puede devolver un comodín genérico <?> regresar Success y Error en un mismo método de asignación de solicitudes

public ResponseEntity<?> method() {
    boolean b = // some logic
    if (b)
        return new ResponseEntity<Success>(HttpStatus.OK);
    else
        return new ResponseEntity<Error>(HttpStatus.CONFLICT); //appropriate error code
}

@Mark Norman respuesta es el enfoque correcto

no estoy seguro, pero creo que puedes usar @ResponseEntity y @ResponseBody y enviar 2 diferentes es Éxito y el segundo es un mensaje de error como:

@RequestMapping(value ="/book2", produces =MediaType.APPLICATION_JSON_VALUE )
@ResponseBody
Book bookInfo2() {
    Book book = new Book();
    book.setBookName("Ramcharitmanas");
    book.setWriter("TulasiDas");
    return book;
}

@RequestMapping(value ="/book3", produces =MediaType.APPLICATION_JSON_VALUE )
public ResponseEntity<Book> bookInfo3() {
    Book book = new Book();
    book.setBookName("Ramayan");
    book.setWriter("Valmiki");
    return ResponseEntity.accepted().body(book);
}

Para obtener más detalles, consulte esto: http://www.concretepage.com/spring-4/spring-4-mvc-jsonp-example-with-rest-responsebody-responseentity

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *