Я использую Spring Boot для простого REST API и хотел бы вернуть правильный код состояния HTTP, если что-то не удается.
@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?
}
Поскольку я новичок в Spring и Spring Boot, основной вопрос заключается в том, как мне вернуть разные коды состояния, когда что-то в порядке или не удается?
источник
javax.servlet.http.HttpServletResponse
похоже, не все коды состояния, которыеorg.springframework.http.HttpStatus
есть. Таким образом, вы можете использоватьHttpStatus.UNPROCESSABLE_ENTITY.value()
для передачи значения int в response.setStatus. Также это отлично работает для обработки ошибок@ExceptionHandler
.Один из способов сделать это - использовать ResponseEntity в качестве возвращаемого объекта.
источник
Попробуйте этот код:
источник
ErrorBean
?Хороший способ - использовать Spring ResponseStatusException
Вместо того, чтобы возвращать
ResponseEntity
или аналогичный, вы просто бросаетеResponseStatusException
из контроллера с помощьюHttpStatus
и, например:или:
Это приводит к ответу клиенту, содержащему статус HTTP (например, 400 Bad request) с телом вроде:
источник
Если вы хотите вернуть код состояния, определенный пользователем, вы можете использовать ResponseEntity, как здесь:
CustomHttpStatusValue может быть любым целым числом в пределах или вне стандартных кодов состояния HTTP.
источник
Есть разные способы вернуть код состояния: 1: класс RestController должен расширять класс BaseRest, в классе BaseRest мы можем обрабатывать исключение и возвращать ожидаемые коды ошибок. например :
источник