Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Для чего нужен Retrofit?
Retrofit — это HTTP-клиент и REST-фреймворк для Android и Java. Это библиотека от Square для упрощения работы с REST API и сетевыми запросами.
Основное назначение
Retrofit превращает HTTP API в Java-интерфейсы, используя аннотации. Вместо низкоуровневых HTTP-запросов вы описываете API декларативно:
interface ApiService {
@GET("/users")
suspend fun getUsers(): List<User>
@GET("/users/{id}")
suspend fun getUser(@Path("id") userId: Int): User
@POST("/users")
suspend fun createUser(@Body user: User): Response<User>
@DELETE("/users/{id}")
suspend fun deleteUser(@Path("id") userId: Int)
}
Ключевые преимущества
1. Упрощение кода
// Без Retrofit — много boilerplate кода
val httpClient = HttpClient()
val url = "https://api.example.com/users"
val response = httpClient.newCall(Request.Builder().url(url).build()).execute()
val users = JSONParser.parse(response.body.string())
// С Retrofit — всего одна строка
val users = apiService.getUsers()
2. Автоматическая сериализация/десериализация Retrofit автоматически преобразует JSON в объекты (с Moshi, Gson) и обратно:
@POST("/users")
suspend fun createUser(@Body user: User): User
// JSON → User объект автоматически
3. Встроенная обработка ошибок
try {
val user = apiService.getUser(1)
// Успех
} catch (e: IOException) {
// Сетевая ошибка
} catch (e: HttpException) {
// Ошибка HTTP (4xx, 5xx)
}
4. Интеграция с корутинами
viewModelScope.launch {
try {
val users = apiService.getUsers()
_uiState.value = UiState.Success(users)
} catch (e: Exception) {
_uiState.value = UiState.Error(e.message)
}
}
Основные аннотации
| Аннотация | Описание |
|---|---|
@GET, @POST, @PUT, @DELETE | HTTP методы |
@Path | Параметры пути URL |
@Query | Query параметры (после ?) |
@Body | Тело запроса |
@Header | Заголовки запроса |
@Headers | Множество заголовков |
@FormUrlEncoded, @Multipart | Форматы отправки данных |
Практический пример: ViewModel с Retrofit
class UserViewModel(
private val apiService: ApiService
) : ViewModel() {
private val _users = MutableStateFlow<List<User>>(emptyList())
val users: StateFlow<List<User>> = _users.asStateFlow()
private val _error = MutableStateFlow<String?>(null)
val error: StateFlow<String?> = _error.asStateFlow()
fun loadUsers() {
viewModelScope.launch {
try {
val result = apiService.getUsers()
_users.value = result
_error.value = null
} catch (e: Exception) {
_error.value = e.message
}
}
}
}
Почему это критично для Android
- Стандарт индустрии — используется в 99% Android проектов
- Экономия времени — вместо писать 100 строк, пишешь 5
- Безопасность типов — ошибки API выявляются на этапе компиляции
- Производительность — оптимизирован для сетевых операций
- Экосистема — отлично интегрируется с RxJava, корутинами, DI
Retrofit — это must-have библиотека для любого Android разработчика, занимающегося сетевыми запросами.