Как я могу сделать запрос http с проверкой подлинности и вернуть поток объектов с помощью dart? - PullRequest
0 голосов
/ 22 октября 2018

Я должен указать ключ API в заголовке запроса следующим образом:

Авторизация: Носитель "ВАШ КЛЮЧ API"

Это мой код (Я не уверен, куда поместить заголовок и как )

Future<Stream<Book>> getBooks() async {
  var url = ‘example_url’

  var client = http.Client();
  var streamedResponse = await client.send(
    http.Request(‘get’, Uri.parse(url))
  );

  return streamedResponse.stream
    .transform(utf.decoder)
    .transform(json.decoder)
    .expand(jsonBody) => (jsonBody as Map)[‘results’] )
    .map((jsonBook) = Book.fromJson(jsonBook));
}

Документы Flutter https://flutter.io/cookbook/networking/authenticated-requests/ говорят об использовании этого формата для аутентифицированных запросов, но это не для потоков, этовозвращает будущее объекта (Книга)

Future<Book> fetchPost() async {
  final response = await http.get(
    'https://jsonplaceholder.typicode.com/posts/1',
    headers: {HttpHeaders.authorizationHeader: "Place your_api_token_here"},
  );
  final responseJson = json.decode(response.body);

  return Book.fromJson(responseJson);
}

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете добавить пользовательские заголовки после создания Request

final request = http.Request('GET'), url)
      ..headers.addAll(myHeaders);
...