Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Разница между okhttp и retrofit

#java #android #retrofit #okhttp


Доброго времени суток. Кто-нибудь может объяснить мне разницу между retrofit и okhttp?
Ведь в okhttp строить запросы гораздо легче, на мной взгляд, тогда почему все используют
retrofit?
    


Ответы

Ответ 1



Retrofit по сути это обертка для OkHttp или как привычно слышать API. И действительно это и есть REST API. OkHttp - это клиент HTTP / SPDY. Отсюда разница: Для OkHttp мы формируем URL, делаем запрос, получаем объект. А вот Retrofit генерирует URL, по уже заданным правилам и это действительно очень удобно. Всё что нужно это прописать интерфейс. После получения объекта в ретрофит можно использовать парсер(можно написать свой), который может сразу предоставить объект в нужном виде в колбеке для последующей работы, тоже удобно. Те по факту Retrofit всеравно использует okHttp, для того чтоб осуществить запрос, просто он дополнительно предоставляет дополнительный функционал и довольно удачно. По скорости работы всё будет идентично и это очевидно. А вот удобства для структуры очень много, Retrofit хорош для RxAndroid и удобно встает в Clean Architecture, удобно использовать в MVP, очень удобно выносится в модуль Dagger2. Да и сам Retrofit не ограничивает в теории настройку клиента OkHttp, вы можете его подменить.

Ответ 2



okhttp это библиотека, которая реализует связь по http. Retrofit это библиотека, которая даёт вам удобную работу с REST сервисами. Объясняю: По умолчанию ретрофит базируется на Okhttp. Т.е. вам как разработчику, использующему ретрофит необходимо написать всего один интерфейс, и потом Retrofit.Bulder() сам сгенерирует для вас реализацию. Внутри сгенерированного класса вы увидите код работающий на OkHttp. Можно работать и без ретрофита, но тогда вместо написания одного интерфейса вам придется писать очень много лишнего кода. Короче говоря, Ретрофит это обертка над OkHttp + куча разных крутых фишек, типа сериализаторов (к примеру Gson подключается одной строкой и все ваши Java классы магическим образом сериализуются/десериализуются в JSON) можно и в XML, еще из фишек - адаптеры, к примеру для RxJava и других хитрых библиотек, как упоминалось ранее - кодогенерация. Вы не пишете тонны кода, Ретрофит сгенерирует их за вас. Ну и прочие приятные фишки, которые вы откроете для себя плотно нырвнув в изучение ретрофита и okhttp

Ответ 3



Retrofit суть надстройка над OkHttp. Она помогает писать меньше кода для составления запросов к API и делать это в едином стандарте - вы в отдельном интерфейсе определяете java методы, указывая аннотациями тип http метода и его параметры - адрес, заголовки, поля, тело. Также вы определяете там тип возвращаемого значения - например класс-модель, в которую распарсится json ответ от сервера. После чего создаёте экземпляр класса, реализующий этот интерфейс (весь код уже готов) и просто вызываете описанный в интерфейсе метод - он вернёт ответ сервера в виде экземпляра java класса. Как итог - меньше кода и всё собрано компактно в одном файле.

Комментариев нет:

Отправить комментарий