Pull to refresh

Comments 12

Спасибо за статью.
Объясните новичку, зачем использовать Retrofit и прочие полезные библиотеки, если можно всё накодить без них?
Для ускорения скорости разработки :)
Кто-то уже написал то, что скорее всего понадобится в большинстве проектов.
В случае с Retrofit, после того как один раз создан и настроен Retrofit клиент добавление еще одного запроса к Api занимает пару строк и пару минут. Кроме того не приходится заботиться об асинхронности самостоятельно (в андроид нельзя выполнять запросы к сети из главного (UI) потока), а без сторонних библиотек это требует много усилий и нервов :D

Если я ничего не путаю baseUrl метод билдера клиента всегда вроде требовал '/' в конце урла или это уже убрали в последних версиях?

Спасибо, как раз исправляю)
Вроде все теперь
При использовании этого адаптера интерфейсы Retrofit могут возвращать типы RxJava 2.x, например, Observable, Flowable или Single и т. д.


Приведите пожалуйста примеры, когда идиоматически правильно использовать Flowable & Observable в качестве возвращаемого параметра у интерфейса.
Поскольку это перевод, а не мое авторство, и я пока не очень хорошо разбираюсь в Rx, думаю, я не в праве давать такие комментарии. Будет здорово, если кто-то другой ответит
Различия между типами можно посмотреть например здесь
Для получения данных из API лучше использовать Single или Maybe(в случае если с сервера может прийти пустое тело в ответе), т.к обычно запрос один и подписка не нужна. Разница же между Flowable и Observable в RxJava 2.x в том, что у первого есть BackPressure, а у второго нет. Подробнее про Backpressure c примерами можно почитать здесь.
Поправлю Вас немножко. Если ожидаете пустое тело ответа то, идеологически правильно, было бы использовать Completable. Maybe нужно использовать для операция другого типа.

К чему я это все?

Когда я вижу в примерах Retrofit'a Observable меня просто в дрожь бросает. Вроде бы ничего плохого и «и так сойдет» но дьявол кроется в мелочах.
Да, Вы правы насчет Maybe, спасибо за уточнение.

Мне кажется, большинство таких примеров пришли к нам прямиком из RxJava 1.x, причем еще до появления в ней Single и т.д. Переписывать все примеры у авторов либо нет времени, либо «и так сойдет» :) Ну а часть статей вообще бездумно скопированы, цифра 1 поменяна на 2 и добавлена строчка про Flowable. Так что найти хорошее объяснение на реальном примере — это надо еще очень постараться.

Спасибо, поизучал Retrofit по этой статье. Надо добавить:

  1. С заголовками можно (по крайней мере сейчас) можно работать гораздо проще: https://square.github.io/retrofit/#api-declaration , раздел HEADER MANIPULATION.

  2. Помимо асинхронных запросов можно делать синхронные. На примере Упражнения 3: вместо call.enqueue(this); пишем:

Response<SearchPage> response = call.execute(); 

System.out.println(response.code()); 
System.out.println(response.body());

и получаем непосредственно ответ.

3. Непонятно: и в примере из статьи, и в моём call после получения response долгое время (с минуту наверно) "висит" (call.isExecuted() == true). Дальнейшему исполнению программы это не мешает, но непонятно почему и что с этим делать. Кто знает - подскажите.

4. Почему-то все примеры с Retrofit в интернетах - для Андроид. Его вообще для компов применяют или я зря его изучал? :)

Sign up to leave a comment.

Articles