Spring предоставляет ответ HTTP 200 (OK ) по умолчанию, когда конечная точка успешно возвращается. Чтобы вернуть пользовательский статус HTTP , используйте аннотацию @ ReponseStatus над функцией и передайте код состояния в скобках. Ваш фрагмент кода должен выглядеть следующим образом:
@RestController
@RequestMapping("/user")
class UserController(val userService: UserService) {
@PostMapping("/register")
@ResponseStatus(HttpStatus.CREATED)
fun register(@RequestBody body: UsernamePasswordResource): Mono<*> {
return userService.createUser(body.username, body.password)
.map {ResponseEntity(it, HttpStatus.CREATED)}
.doOnError {
if (it is DuplicateUserException){
ResponseEntity(ErrorResource(it.message!!), HttpStatus.BAD_REQUEST)
} else {
ResponseEntity(ErrorResource("Internal server error"), HttpStatus.INTERNAL_SERVER_ERROR)
}
}
}
}