Что такое interceptor

«Что такое interceptor» — вопрос из категории Сети, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Interceptor — это компонент, который позволяет перехватывать и обрабатывать HTTP-запросы и ответы перед их отправкой или после получения. Чаще всего используется в библиотеках типа OkHttp для логирования, добавления заголовков, обработки ошибок и т.д.

Пример с OkHttp:

val loggingInterceptor = HttpLoggingInterceptor().apply {
    level = HttpLoggingInterceptor.Level.BODY
}

val client = OkHttpClient.Builder()
    .addInterceptor(loggingInterceptor)
    .addInterceptor { chain ->
        val request = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer token")
            .build()
        chain.proceed(request)
    }
    .build()

Виды интерцепторов:

  1. Application Interceptors — работают на уровне приложения.
  2. Network Interceptors — работают на сетевом уровне (после кеширования).