Как обработать неверный запрос на возврат пользовательского объекта Response для PostRequest в Spring Boot Rest Api - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь создать Api, который может принимать POST-запрос. Но я хочу обработать и плохой запрос. Мой Json объект будет выглядеть как

JSON Object
{    
      "name": "tom"
      "description" : "he is scholar"
} 

JSON object with incorrect parameter
{  
      "name": "tom"
      "descr" : "he is scholar"

}

    @PostMapping("/questions")
    public question addQuestion(@RequestBody question theQuestion) {
        theQuestion.setId(0);
        try {
            thequestionService.save(theQuestion);

        }catch(Exception ex) {
            throw new badRequestException("bad request");
        }
        return theQuestion;
    } 

Для плохого запроса это ошибка пружины Boot internel. Но я хочу отправить пользовательский объект JSON обратно клиенту.

Ответ в случае сбоя 400 Bad Request.

{
  "status":"failed to query"
  "description" : " can be any thing"
}

Помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать аннотацию @JsonAlias.

public class Question {

    @JsonAlias(value={"description", "descr"})
    private String description;

}

Эта аннотация была добавлена ​​в Jackson 2.9. Возможно, вам придется обновить / переопределить версию Jackson.

В случае неверного запроса возникает ошибка загрузки весеннего загрузчика.

Вы также можете добавить аннотацию @JsonIgnoreProperties(ignoreUnknown = true) к классу Question. Это не приведет к ошибке для ключа descr в JSON, но инициализирует поле description в объекте Question как null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...