Задать вопрос
Italia1235
@Italia1235

Можно ли изменять String в объект прямо в методе, который делает вызов к API?

Подскажите, плз. является ли нарушением принципа solid, данный код

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        return new ObjectMapper().readValue(response.body(), responseType);


Лучше вынести превращение из строки в объект в другой класс, чтобы избавится от побочных эффектов в методе get Запроса?
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
Я за реактивный клиент, а там все это делается вполне прозрачно:
webClient.get()
                    .uri("https://your.awesome.uri")
                    .retrieve()
                    .bodyToFlux(YourAwesomeObject.class)
                    .log()
// TODO :: map here                    .map(yourAwesomeObject -> )
//  recomended way  :   .subscribe(result ->   ...);
//  depricated way :       .block();


При этом маппинг ответа в свою модель можно выести хоть в другой класс...
Ответ написан
@Dementor
программист, архитектор, аналитик
1) SOLID - это 5! принципов, а не только лишь single responsibility

2) Глядя на всего две строки кода, говорить о нарушении принципов ООП-проектирования могут только полные теоретики и далекие от практики люди.

3) Обмен с внешним ресурсом у вас идет с помощью классов библиотеки java.net.http, а преобразование ответа в объект с помощью библиотеки com.fasterxml.jackson . Вы в приведенных двух строках кода только стыкуете результаты работы двух библиотек. Что именно вас в этом смущает? Хотите сделать над каждой библиотекой обвертку? Но уровнем выше вам все равно придётся делать эту стыковку результатов, просто добавите лишний уровень абстракции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы