У меня есть контроллер покоя для авторизации:
@RestController
class AuthController {
@PostMapping("/sign-up")
fun signUp(@RequestBody signUpRequest: SignUpRequest): ResponseEntity<String> {
some code here..
}
}
Метод signUp
получает модель SignUpRequest
в качестве тела запроса. SignUpRequest
модель:
enum class Role {
@JsonProperty("Student")
STUDENT,
@JsonProperty("Tutor")
TUTOR
}
data class SignUpRequest(
val role: Role,
val email: String,
val password: String
)
Когда я делаю /sign-up
отправлять запрос с JSON:
{
"role": "asdf",
"email": "",
"password": ""
}
Он возвращает мне ответ, который был сгенерирован весенней загрузкой:
{
"timestamp": "2020-02-12T05:45:42.387+0000",
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: Cannot deserialize value of type `foo.bar.xyz.model.Role` from String \"asdf\": not one of the values accepted for Enum class: [Student, Tutor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `foo.bar.xyz.model.Role` from String \"asdf\": not one of the values accepted for Enum class: [Student, Tutor]\n at [Source: (PushbackInputStream); line: 3, column: 10] (through reference chain: foo.bar.xyz.model.SignUpRequest[\"role\"])",
"path": "/sign-up"
}
Вопрос заключается в следующем: как я могу вернуть свой пользовательский JSON вместо сгенерированного по умолчанию JSON?
Я хочу вернуть свой пользовательский JSON, например:
{
"result": "Invalid user data are given",
"errors": [
{
"fieldName": "ROLE",
"text": "Given role does not exist"
},
{
"fieldName": "EMAIL",
"text": "EMAIL is empty"
}
]
}