Выбор между пакетом:html, dart:html, dart:io (класс HttpClient) и пакетом:http API для получения ресурсов HTTP
Я понял, что в настоящее время существует как минимум три "официальных" библиотеки Dart, которые позволяют мне выполнять HTTP-запрос. Более того, три из этих библиотек (dart:io (класс HttpClient), package:http и dart:html) имеют разные несовместимые API.
На сегодняшний день package: html не предлагает эту функциональность, но на странице GitHub я обнаружил, что она нацелена на 100% -ную совместимость API с dart:html, поэтому эти методы будут добавлены там в конце концов.
Какой пакет предоставляет наиболее перспективный и независимый от платформы API для выдачи HTTP-запроса в Dart?
Это пакет:http?
import 'package:http/http.dart' as http;
var url = "http://example.com";
http.get(url)
.then((response) {
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
});
Это дротик:html/package:html?
import 'dart:html';
HttpRequest.request('/example.json')
.then((response) {
print("Response status: ${response.status}");
print("Response body: ${response.response}");
});
Или дротик?
import 'dart:io';
var client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
.then((HttpClientRequest request) {
// Optionally set up headers...
// Optionally write to the request object...
// Then call close.
...
return request.close();
})
.then((HttpClientResponse response) {
print("Response status: ${response.statusCode}");
print("Response body:");
response.transform(UTF8.decoder).listen((contents) {
print(contents);
});
});
Допустим, я тоже хочу покрыть Android. Это также добавляет пакет: небо в миксе ( https://github.com/domokit/sky_sdk/). Я признаю, что это не "официальная" библиотека Google.
import 'package:sky/framework/net/fetch.dart';
Response response = await fetch('http://example.com');
print(response.bodyAsString());
Что такое (будет) обычный продукт - это https://www.youtube.com/watch?v=t8xdEO8LyL8. Интересно, какой будет их история HTTP-запросов. Что-то подсказывает мне, что это будет еще один зверь, отличающийся от всего, что мы видели до сих пор.
1 ответ
html
Пакет представляет собой HTML-парсер, который позволяет работать со стороной HTML-сервера. Я не ожидал, что он получит некоторые возможности HttpRequest.
http
Целью пакета является предоставление единого API для клиентского и серверного кода Dart. API в dart:html
это всего лишь оболочка над API, предоставляемым браузером. API HttpRequest в dart:io
был построен без ограничений браузера и, таким образом, отклоняется от dart:html
, package:http
предоставляет унифицированный API, который делегирует dart:html
при запуске в браузере и dart:io
при запуске на сервере.
Я думаю package:http
это будущее и кроссплатформенное и должно хорошо соответствовать вашим требованиям.