Работа с API — базовый навык для Flutter-разработчика. Чаще всего для HTTP-запросов используют два подхода: встроенно-простой http и более функциональный Dio. Разберём, что выбрать и как быстро начать.
Когда использовать http
Пакет http подходит, если нужны:
- простые GET/POST-запросы
- минимальная зависимость
- быстрый старт без сложной настройки
Пример GET-запроса через http:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future fetchPosts() async {
final response = await http.get(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
print(data);
} else {
throw Exception('Ошибка загрузки');
}
}
Плюсы http
- лёгкий и понятный API
- отлично подходит для небольших проектов
- минимум абстракций
Когда лучше выбрать Dio
Dio нужен, если проект растёт и важны:
- перехватчики запросов и ответов
- удобная работа с токенами
- таймауты, ретраи, логирование
- загрузка файлов и FormData
- централизованная конфигурация клиента
Пример GET-запроса через Dio:
import 'package:dio/dio.dart';
final dio = Dio(BaseOptions(
baseUrl: 'https://jsonplaceholder.typicode.com',
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
Future fetchPosts() async {
try {
final response = await dio.get('/posts');
print(response.data);
} catch (e) {
print('Ошибка: $e');
}
}
Почему Dio часто выбирают в production 🚀
У Dio удобнее масштабировать сетевой слой. Например, можно добавить interceptor для автоматической подстановки JWT-токена:
dio.interceptors.add(
InterceptorsWrapper(
onRequest: (options, handler) {
options.headers['Authorization'] = 'Bearer token';
handler.next(options);
},
),
);
Это особенно полезно в мобильных приложениях с авторизацией.
Что важно учесть при работе с API в Flutter
- создавайте отдельный слой для сети:
ApiService - описывайте модели данных через
fromJson/toJson - обрабатывайте ошибки: 400, 401, 500, timeout
- не храните токены в открытом виде
- для крупных проектов используйте Dio + clean architecture
Что выбрать: Dio или http? 🤔
http— для простых приложений, тестов, pet-проектовDio— для коммерческой разработки и сложной логики
Если коротко: http проще для старта, Dio сильнее в реальных задачах. Лучший выбор зависит не от “моды”, а от требований проекта. 💡
Подборка каналов про IT — хороший способ оставаться в курсе Flutter, backend, DevOps и мобильной разработки 👀