Использование VndErrors для обработки ошибок, но не получение атрибута "links" в теле ответа errror - PullRequest
0 голосов
/ 08 апреля 2019

Я использую пружинную обработку ошибок HATEOAS с VndErrors в моем классе ControllerAdvice. Согласно спецификации VndErrors в ответе предоставляется 3 атрибута: logref, message и links. В моем случае я получаю logref и сообщение правильно в ответ, но каким-то образом «ссылки» заменяется на «ссылку» в рамках. Не могу найти причину для того же.

Я попытался отладить код и увидел, что объект VndErrors был создан правильно, который содержит атрибут «Ссылки» под ним. Но когда я вижу ответ на Swagger или Curl, это «Ссылка». Я также попытался передать параметр Link в методе VndErrors, но безуспешно.

Вот фрагмент кода из моего класса ControllerAdvice:

ResponseEntity<VndErrors> generateResEntity(HttpStatus status, String exceptionMessage) {
        def xB3TraceId = MDC.get('X-B3-TraceId') ?: status.reasonPhrase
        ResponseEntity.status(status).contentType('application/vnd.error+json').body(new VndErrors(xB3TraceId, exceptionMessage))
    }

Ожидаемые результаты:
[{"logref": "abscdcd15241", "message": "В теле запроса есть неизвестные свойства, проверьте подробности в контракте API. Неизвестное свойство: abc", "links" : []

Фактические результаты:
[{"logref": "abscdcd15241", "message": "В теле запроса есть неизвестные свойства, проверьте подробности в контракте API. Неизвестное свойство: abc", "ссылка" : []

...