Size: a a a

2020 October 20

R(

Roman (rpwheeler) in atinfo chat
Ivan Trechyokas
да ну не, сделайте objectMapper() и им парсите json вручную, если оно вам так надо.  

аннотации тут исключительно ретрофитовская фича. можно всё делать на том же appach httpclient fluent, формировать url руками, get параметры подставлять туда, хедеры, вот это всё, а можно аннотации использовать - тут каждый выбирает свой путь.
> аннотации тут исключительно ретрофитовская фича

Отнюдь не исключительная, с джексоном то же самое :)

> можно всё делать на том же appach httpclient fluent, формировать url руками, get параметры подставлять туда, хедеры, вот это всё, а можно аннотации использовать - тут каждый выбирает свой путь

Ну вот я смотрю на Call<List<Repo>> listRepos(@Path("user") String user); , и что-то меня сомнения грызут что ретрофит сам создаст ещё и класс Repo .
источник

EB

Evgenii B in atinfo chat
Ещё объект converter и его реализация тихонько спрятан
источник

R(

Roman (rpwheeler) in atinfo chat
Mikhail Bratukhin
А в чем враньё, я не понял если честно. Просто аргумент, что у Java есть сторонние библиотеки и их тоже нужно изучать, а не только JDK - это как-то очень странно звучит.
"Пишите на машинных кодах" это отсылка к _низко_ уровневым языкам.
Как я написал, и джава и пайтон _высоко_уровневые, и ни тот ни другой машинным кодам не близок совершенно.

Сторонние библиотеки есть у всех, да, -- но у Джавы статическая типизация, поэтому чтобы слепить объект на лету надо танцевать с бубном и заклинать аннотациями, а у Пайтона типизация динамическая, чего хочешь того и создавай, поэтому и джейсон можно преобразовывать без создания статической схемы.

Вот в этом разница, а не в "машинных кодах".
источник

IT

Ivan Trechyokas in atinfo chat
Roman (rpwheeler)
> аннотации тут исключительно ретрофитовская фича

Отнюдь не исключительная, с джексоном то же самое :)

> можно всё делать на том же appach httpclient fluent, формировать url руками, get параметры подставлять туда, хедеры, вот это всё, а можно аннотации использовать - тут каждый выбирает свой путь

Ну вот я смотрю на Call<List<Repo>> listRepos(@Path("user") String user); , и что-то меня сомнения грызут что ретрофит сам создаст ещё и класс Repo .
> Отнюдь не исключительная, с джексоном то же самое :)
только если тебе надо "что-то подменять или расширять", в остальных случаях аннотации можно не ставить.

> сам создаст ещё и класс Repo .
class Repo() {
  String id;
}
7 потов сошло. слава богу, что словарь не надо создавать =)
источник

MB

Mikhail Bratukhin in atinfo chat
А чем не угодили аннотации-то? Это как раз фича самого языка Java. 🙄
https://www.oracle.com/technical-resources/articles/java/ma14-architect-annotations.html
источник

IT

Ivan Trechyokas in atinfo chat
Roman (rpwheeler)
"Пишите на машинных кодах" это отсылка к _низко_ уровневым языкам.
Как я написал, и джава и пайтон _высоко_уровневые, и ни тот ни другой машинным кодам не близок совершенно.

Сторонние библиотеки есть у всех, да, -- но у Джавы статическая типизация, поэтому чтобы слепить объект на лету надо танцевать с бубном и заклинать аннотациями, а у Пайтона типизация динамическая, чего хочешь того и создавай, поэтому и джейсон можно преобразовывать без создания статической схемы.

Вот в этом разница, а не в "машинных кодах".
не очень понял, причём тут "слепить" и динамическая типизация...
источник

IT

Ivan Trechyokas in atinfo chat
ну как же, это же не декораторы!
источник

MB

Mikhail Bratukhin in atinfo chat
А то, что тестовые движки testng и junit вовсю используют аннотации, чтобы запускать тесты - это ок или тоже от лукавого? Я таки не понимаю предмета спора.
источник

R(

Roman (rpwheeler) in atinfo chat
Ivan Trechyokas
> Отнюдь не исключительная, с джексоном то же самое :)
только если тебе надо "что-то подменять или расширять", в остальных случаях аннотации можно не ставить.

> сам создаст ещё и класс Repo .
class Repo() {
  String id;
}
7 потов сошло. слава богу, что словарь не надо создавать =)
Ну Baeldung , честь ему и хвала, даёт примеры для ретрофита чётче и полнее самого ретрофита.

https://www.baeldung.com/retrofit
источник

MB

Mikhail Bratukhin in atinfo chat
Roman (rpwheeler)
"Пишите на машинных кодах" это отсылка к _низко_ уровневым языкам.
Как я написал, и джава и пайтон _высоко_уровневые, и ни тот ни другой машинным кодам не близок совершенно.

Сторонние библиотеки есть у всех, да, -- но у Джавы статическая типизация, поэтому чтобы слепить объект на лету надо танцевать с бубном и заклинать аннотациями, а у Пайтона типизация динамическая, чего хочешь того и создавай, поэтому и джейсон можно преобразовывать без создания статической схемы.

Вот в этом разница, а не в "машинных кодах".
Не нужно аннотации на лету. Я делал объекты любой структуры и даже противоречащие структуре запроса. Но соглашусь там уже был не уровень чайника. Пришлось писать свой построитель запросов.
источник

R(

Roman (rpwheeler) in atinfo chat
Аннотации -- фича. Но есть очень немногие стандартные аннотации, и многие библиотечные и фреймвоков.

И вот в аннотациях от третьих производитлей начинается магия -- сработает или нет, совместима или нет, и т.д. и т.п.
источник

R(

Roman (rpwheeler) in atinfo chat
Ivan Trechyokas
ну как же, это же не декораторы!
Оставьте декораторы декораторам. Можно спокойно жить с Пайтоном и без декораторов. Они бывают нужны, но совершенно не обязательны.
источник

MB

Mikhail Bratukhin in atinfo chat
Roman (rpwheeler)
Аннотации -- фича. Но есть очень немногие стандартные аннотации, и многие библиотечные и фреймвоков.

И вот в аннотациях от третьих производитлей начинается магия -- сработает или нет, совместима или нет, и т.д. и т.п.
Я вам секрет открою - есть аннотации, чтобы делать свои аннотации. И их очень многие кастомизируют в своих проектах. Кстати, это была одна из фишек Junit5 с новыми аннотациями.
источник

MB

Mikhail Bratukhin in atinfo chat
Так спор получается не про Java, а про Ретрофит?
источник

R(

Roman (rpwheeler) in atinfo chat
Спор получается с чем проще обратиться к апи и поработать с возвращённым джейсоном.

Я бы вот очень-очень-очень хотел чтобы в Джаве было с джейсонами просто как в Пайтоне.

Но пока что никак нет.

На досуге попробую и ретрофит, если с ним будет проще чем с джексоном -- скажу большущее-пребольшущее спасибо :)
источник

MB

Mikhail Bratukhin in atinfo chat
Ну, смотри. Если есть схема swagger'а можно сгенерировать плагином и модель и клиент. Модель в тесте подключить и просто строку текста из запроса преобразуешь как тебе удобно в объект модели. Мне в своё время больше Gson в этом плане понравился.
источник

R(

Roman (rpwheeler) in atinfo chat
Mikhail Bratukhin
Ну, смотри. Если есть схема swagger'а можно сгенерировать плагином и модель и клиент. Модель в тесте подключить и просто строку текста из запроса преобразуешь как тебе удобно в объект модели. Мне в своё время больше Gson в этом плане понравился.
Хорошо когда есть схемы. Но в моей жизни их чаще нет, а вот проекты которые делались 12+ лет назад есть.
источник

R(

Roman (rpwheeler) in atinfo chat
В общем, жаль что некоторые мои проекты постарше сваггера будут.
источник

MB

Mikhail Bratukhin in atinfo chat
Обычно в таких проектах и нет JSON'а, а лютый XML
источник

MB

Mikhail Bratukhin in atinfo chat
Сваггера может и не быть, а JSON-схема в наличии. По-моему из неё можно точно также через плагин сгенерить модельку.
источник