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

Один ресурс API в Dart

Многие API адресуют объект по идентификатору в конце пути. Ответ - один JSON-объект, его разбирают так же, как локальную строку, только источником служит response.body.

Чтение "/users/1" на typicode возвращает пользователя с полем name. Модель снова может быть короткой - лишние ключи в ответе не мешают fromJson:

import 'package:http/http.dart' as http; import 'dart:convert'; class ApiUser { ApiUser(this.id, this.name); final int id; final String name; factory ApiUser.fromJson(Map<String, Object?> json) { return ApiUser( 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 = ApiUser.fromJson(raw); print(user.name); } }

Тот же путь с другим числом в конце дает другую запись. Достаточно поменять сегмент адреса и снова прочитать name из разобранного объекта:

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