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

Идентификатор в пути в Dart

Шаблон "/posts/{id}" означает, что число в конце адреса выбирает запись. Строку URI собирают заранее, подставляя нужный идентификатор в литерал или через интерполяцию.

Требуется пост с номером 3. После чтения тела достаточно модели с id и title:

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

Тот же прием работает для пользователей: меняется только базовый сегмент и тип модели. Число 2 в пути дает вторую учебную запись:

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 userId = 2; var address = 'https://jsonplaceholder.typicode.com/users/$userId'; var response = await http.get(Uri.parse(address)); var raw = jsonDecode(response.body); if (raw is Map<String, Object?>) { var user = ApiUser.fromJson(raw); print(user.name); } }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить