Estoy usando Spring Boot para una API REST simple y me gustaría devolver un código de estado HTTP correcto si algo falla.
@RequestMapping(value="/rawdata/", method = RequestMethod.PUT)
@ResponseBody
@ResponseStatus( HttpStatus.OK )
public RestModel create(@RequestBody String data) {
// code ommitted..
// how do i return a correct status code if something fails?
}
Siendo nuevo en Spring y Spring Boot, la pregunta básica es ¿cómo devuelvo códigos de estado diferentes cuando algo está bien o falla?
spring
rest
spring-boot
Marco
fuente
fuente
javax.servlet.http.HttpServletResponse
parece no tener todos los códigos de estado que losorg.springframework.http.HttpStatus
tiene. Por lo tanto, puede usarHttpStatus.UNPROCESSABLE_ENTITY.value()
para pasar el valor int a response.setStatus. Además, esto funciona perfectamente para el manejo de errores@ExceptionHandler
.Una de las formas de hacer esto es usar ResponseEntity como un objeto de retorno.
fuente
Prueba este código:
fuente
ErrorBean
?Una buena forma es usar la ResponseStatusException de Spring
En lugar de devolver un
ResponseEntity
o similar, simplemente arroja elResponseStatusException
del controlador con unaHttpStatus
causa y, por ejemplo:o:
Esto da como resultado una respuesta al cliente que contiene el estado HTTP (por ejemplo, 400 Solicitud incorrecta) con un cuerpo como:
fuente
En caso de que desee devolver un código de estado personalizado definido, puede utilizar ResponseEntity como aquí:
CustomHttpStatusValue podría ser cualquier número entero dentro o fuera de los códigos de estado HTTP estándar.
fuente
Hay diferentes formas de devolver el código de estado, 1: la clase RestController debe extender la clase BaseRest, en la clase BaseRest podemos manejar la excepción y devolver los códigos de error esperados. por ejemplo :
fuente