Какие сущности используешь в Retrofit

«Какие сущности используешь в Retrofit» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Retrofit использует несколько ключевых сущностей:

  1. Интерфейсы – определяют API-эндпоинты с аннотациями (@GET, @POST и т.д.).
  2. Retrofit.Builder – конфигурирует клиент (базовый URL, конвертеры, адаптеры).
  3. Call – инкапсулирует HTTP-запрос и ответ (синхронный/асинхронный).
  4. Converter.Factory – преобразует данные (например, Gson, Moshi).
  5. Interceptor – модифицирует запросы/ответы (логирование, заголовки).
  6. OkHttpClient – низкоуровневый HTTP-клиент (по умолчанию в Retrofit).

Пример интерфейса:

interface ApiService {
    @GET("users/{id}")
    suspend fun getUser(@Path("id") userId: Int): User
}

Для корутин можно использовать suspend или Flow, для RxJava – Observable<T>.