Что стоит учесть при создании сетевых запросов

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

Ответ

  • Main Thread: Не выполняй сетевые запросы в основном потоке — используй Coroutine, RxJava или AsyncTask (deprecated)
  • Разрешения: Добавь <uses-permission android:name="android.permission.INTERNET"/> в AndroidManifest.xml
  • Обработка ошибок: Лови исключения (IOException, SocketTimeoutException)
  • HTTPS: Используй HTTPS, для HTTP нужна настройка Network Security Config
  • Кэширование: Реализуй кэширование ответов для оффлайн-работы
  • Отмена запросов: Отменяй запросы при уничтожении Activity/Fragment (например, через CoroutineScope или Disposable)

Пример с Retrofit + Kotlin:

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

interface ApiService {
    @GET("users")
    suspend fun getUsers(): List<User>
}

// Вызов в Coroutine
lifecycleScope.launch {
    try {
        val users = retrofit.create(ApiService::class.java).getUsers()
    } catch (e: Exception) {
        // Обработка ошибки
    }
}