Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpApInr 172 of 224 menu
◀ ▶

Введение в запросы к API в Dart

Веб-API часто отвечает не HTML, а текстом JSON. Клиент на Dart получает его как строку в response.body, после чего ту же строку передают в jsonDecode из dart:convert.

Сетевой обмен удобно делать пакетом http: метод http.get принимает Uri, а результат ждут через await внутри main с пометкой async.

Публичный каталог jsonplaceholder.typicode.com отдает записи пользователей. Достаточно одного чтения по адресу "/users/1", затем разбор только нужных полей:

import 'package:http/http.dart' as http; import 'dart:convert'; class UserPreview { UserPreview(this.id, this.name); final int id; final String name; factory UserPreview.fromJson(Map<String, Object?> json) { return UserPreview( json['id'] as int, json['name'] as String, ); } } void main() async { var response = await http.get( Uri.parse( 'https://jsonplaceholder.typicode.com/users/1', ), ); var raw = jsonDecode(response.body); if (raw is Map<String, Object?>) { var user = UserPreview.fromJson(raw); print(user.id); print(user.name); } }

В тексте от сервера есть и другие ключи - почта, адрес, компания. Фабрика fromJson читает только id и name, лишние ключи в карте не мешают разбору.

Тот же прием работает, если в модели оставить идентификатор и почту вместо имени - лишние ключи по-прежнему не мешают:

import 'package:http/http.dart' as http; import 'dart:convert'; class UserMail { UserMail(this.id, this.email); final int id; final String email; factory UserMail.fromJson(Map<String, Object?> json) { return UserMail( json['id'] as int, json['email'] as String, ); } } void main() async { var response = await http.get( Uri.parse( 'https://jsonplaceholder.typicode.com/users/1', ), ); var raw = jsonDecode(response.body); if (raw is Map<String, Object?>) { var user = UserMail.fromJson(raw); print(user.email); } }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить