angulardart и django_rest. невозможно получить данные из бэкэнда - PullRequest
1 голос
/ 09 февраля 2020

этот пример взят из учебника , и я получаю ошибку Исключение: ошибка сервера; причина: ожидалось значение типа 'int', но получено одно из значений типа 'String'

. Терминал Pycharm Backend дает код данных 200

[09 / Feb / 2020 11:45 : 48] "GET / реклама / HTTP / 1.1" 200 492

  class Hero {
  final int id;
  String name;

  Hero(this.id, this.name);

  factory Hero.fromJson(Map<String, dynamic> hero) =>
      Hero(_toInt(hero['id']), hero['name']);

  Map toJson() => {'id': id, 'name': name};
}

int _toInt(id) => id is int ? id : int.parse(id);

import 'dart:async';
import 'dart:convert';

import 'package:http/http.dart';

import 'hero.dart';

class HeroService {
  static final _headers = {'Content-Type': 'application/json'};
  static const _heroesUrl = 'http://127.0.0.1:8000/heroes'; // URL to 
 web API
  final Client _http;

  HeroService(this._http);

  Future<List<Hero>> getAll() async {
    try {
      final response = await _http.get(_heroesUrl);
      final heroes = (_extractData(response) as List)
          .map((value) => Hero.fromJson(value))
          .toList();
      return heroes;
    } catch (e) {
      throw _handleError(e);
    }
  }

  Future<Hero> create(String name) async {
    try {
      final response = await _http.post(_heroesUrl,
          headers: _headers, body: json.encode({'name': name}));
      return Hero.fromJson(_extractData(response));
    } catch (e) {
      throw _handleError(e);
    }
  }

  dynamic _extractData(Response resp) => json.decode(resp.body)['data'];

  Exception _handleError(dynamic e) {
    print(e); // for demo purposes only
    return Exception('Server error; cause: $e');
  }
}

rest_api it's work to webstorm

1 Ответ

0 голосов
/ 12 февраля 2020

У меня нет json this -> data: и чтобы получить необходимые данные из строки -> dynamici c _extractData (Response resp) => json .decode (resp.body) [ 'данные'] ; удалите ['data'] или отредактируйте JSON генерацию django_rest, если у вас есть информация о том, как получить JSON like {'data': []} в drf, я рад прочитать это

...