Сетевой запрос — это процесс отправки и получения данных с сервера с использованием сетевого протокола, такого как HTTP или HTTPS. В Flutter сетевые запросы могут выполняться с использованием HTTP-библиотеки Dart или других сторонних библиотек, таких как Dio, Retrofit или Chopper. В этой статье мы рассмотрим, как выполнять сетевые запросы в Flutter, используя HTTP-библиотеку Dart.
Отправка GET-запроса
Чтобы сделать HTTP-запрос в Flutter, нам нужно импортировать http-пакет в наш проект. Затем мы можем использовать методы get(), post(), put() и delete() для выполнения различных типов HTTP-запросов. Например, чтобы сделать запрос GET, мы можем использовать следующий код:
import 'package:http/http.dart' as http;
Future<void> getData() async {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
if (response.statusCode == 200) {
print(response.body);
} else {
print('Request failed with status: ${response.statusCode}.');
}
}
В приведенном выше коде мы импортируем http-пакет и определяем асинхронную функцию с именем getData(). Затем мы используем метод http.get(), чтобы отправить запрос GET по указанному URL. Ответ сохраняется в переменной response, которую мы затем проверяем на наличие кода состояния. Если код состояния равен 200, мы печатаем тело ответа, которое содержит данные, возвращенные сервером. Если код состояния не равен 200, мы выводим сообщение об ошибке.
Отправка POST-запроса
Мы также можем отправлять POST-запросы для отправки данных на сервер. Например, чтобы отправить JSON на сервер, мы можем использовать следующий код:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<void> sendData() async {
final payload = {'name': 'John Doe', 'email': 'johndoe@example.com'};
final response = await http.post(
Uri.parse('https://example.com/api/users'),
body: jsonEncode(payload),
headers: {'Content-Type': 'application/json'},
);
if (response.statusCode == 201) {
print('Data sent successfully.');
} else {
print('Request failed with status: ${response.statusCode}.');
}
}
В приведенном выше коде мы импортируем пакет dart:convert для кодирования полезной нагрузки в виде строки JSON. Затем мы определяем асинхронную функцию с именем sendData() и создаем полезную нагрузку, содержащую имя и адрес электронной почты пользователя.
Мы используем метод http.post(), чтобы отправить запрос POST по указанному URL-адресу и передать полезную нагрузку в качестве тела запроса. Мы также задаем заголовку Content-Type значение application/json, чтобы указать, что полезная нагрузка находится в формате JSON. Наконец, мы проверяем код состояния ответа, чтобы определить, был ли запрос успешным.
Заключение
Сетевые запросы являются неотъемлемой частью создания любого мобильного приложения, взаимодействующего с сервером. В Flutter мы можем использовать встроенную HTTP-библиотеку Dart или другие сторонние библиотеки для выполнения сетевых запросов. Следуя примерам, приведенным в этой статье, вы можете легко выполнять запросы GET и POST в Flutter и обрабатывать данные ответа в соответствии с требованиями вашего приложения.