UnrecognizedPropertyException при обмене данными между 2 другими службами - PullRequest
0 голосов
/ 17 февраля 2020

мой веб-сервис с пружинным загрузчиком (A), использующий другой API из веб-службы (B). Ниже приведен вызов.

   List<ApiTarget> outboundApis   = restClientUtil.getList(apiServerEndPoint, OpenApiTarget.class, rsqlFilter);

, но недавно веб-служба (B) внесла изменения, добавив в ответ еще несколько полей / свойств. Я начал получать сообщение об ошибке:

"com.faster xml .jackson.databind.ex c .UnrecognizedPropertyException: нераспознанное поле \" apiConsumer \ "(класс xxx.ApiTarget), не помеченное как игнорируемое

Итак, я решил не использовать модель ApiTarget, вместо этого мы отправляем запрос, как показано ниже, с запросом ответа в Object.class.

 List<ApiTarget> outboundApis = restClientUtil.getList(apiServerEndPoint, Object.class, rsqlFilter);

, поскольку я использую genaralised resttemplate и objectMapper, я не хочу предоставлять objectMapper.disable (DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); для преобразования ответа в модель

, а также я не могу аннотировать @JsonIgnoreProperties, потому что здесь проблема с новыми свойствами из ответа.

поэтому мой вопрос, есть ли подход, при котором мне не нужно вносить изменения в мою модель (ApiTarget, возможно, добавляя новые реквизиты), если сервис-потребитель вносит изменения в ответы, но все еще продолжает использовать модель.

и в этом случае мы должны go для модели, подобной (ApiTarget), вместо напрямую используя ответ json.

...