Dio программа что это

Флаттера HTTP библиотека DIO 2.1 официально выпущен

Dio Является мощным DART HTTP библиотека запрос, поддержка RESTful API, FormData, перехватчик, запрос отмены, управление печенье, загрузка файлов / загрузки, тайм-аут, пользовательские адаптеры и т.д. Текущий DIOpubПоследующие 100 очков, рейтинг был внесен в список (под все вкладки)! В то же время, DIO также является наиболее популярным флаттера библиотека третьей стороной на GitHub, адрес проекта:Dio-Github。

С момента выхода 1.0, DIO получил внимание большого числа отечественных и зарубежных разработчиков и пользователей распространяется по всему миру. В то же время, он также получил много предложений, чтобы сделать функции DIO более мощный, более простой в использовании, мы интегрируем различные отзывы в 1.0, в версии 2.0, у нас есть большое обновление для DIO. Для того, чтобы иметь переход между пользователями 1.0 и 2.x, мы ставим 2.0.x-2.1.0 в качестве предварительной версии всей сети в течение примерно двух месяцев. Теперь, я очень рад сообщить всем, функция 2.x имеет сходиться, качество является стабильным, поэтому мы официально выпустили первую версию стабильной DIO 2.x сегодняDio v2.1.0。

Интерфейсы и абстракции в Dart. Переносим Dio в абстрактную сущность.

По сравнению с 1.x, 2.x во многих местах , таких как RESTful API, перехватчики, FormData, кроме этого, DIOS также введен в слой адаптера в 2ом, для передачи данных интерфейса и пользовательского MOCK базовых сетей. Библиотека обеспечивает поддержку , Общая функция была значительно улучшена по сравнению с 1.x, поэтому мы настоятельно рекомендуем всем пользователям 1.x можно обновить до 2.1.

Список изменений DIO V2.1.x

Restful API

2. Основные изменения в RESTful API в 2.x являются:

  1. служба поддержки Uri В 1.x, то URL может быть только строкой, и все интерфейсы в 2.1 обеспечивают версии, которые поддерживают URI, такие как метод GET. dio.get(. ) и dio.gerUri(. ) 。
  2. Все методы поддерживаются queryParameters 2.1 семантика параметров стандартизировать и разрешить все запросы передать запрос, в то время как DATA представляется только для способа представления запрошенного тела, такие как тело запроса. В дополнении к Uri.queryParameters , У нас есть RESTful API queryParameters Функция была усилена, есть два основных отличия:
  3. Значение параметра отличается, бывший может принимать только Map> Введите параметры, в то время как последний может принять Map Введите, например, как:

dio.getUri(Uri(url, queryParameters: «age»:15>)) // выбросит исключение, значение URI.QueryParameter не может быть типа INT dio.get(url, queryParameters: «age»:15>); // Хорошо! Копировать код
dio.options.baseUrl=»http://domain.com/»; // Окончательный URI следующего запроса: http://domain.com/API? Выполнен = 1 и выставлен = 2 Response response = await dio.getUri( Uri(path: «api»,queryParameters: «selectedId»: [«1», «2»],>); ); // Окончательный URI следующего запроса: https: //flutterchina.club? Выбран% 5b% 5d = 1 и выставлено% 5b% 5d = 2 dio.get(«api»,queryParameters: «selectedId»: [«1», «2»], >); Копировать код

истребитель-перехватчик

  1. Поддержка установки нескольких перехватчиков; Таким образом, мы можем выделить некоторые функции, такие как запрос печати / журналы реагирования и управление печеньем может быть упакованы индивидуально в перехватчика так, что в расцепления может увеличить повторное использование кода. 2.1 перехватчик очередь, и перехватчик будет выполнен в Фифи, если blockbus в очереди возвращает ответ или ошибка, запрос заканчивается, перехватчик за очереди не будет выполняться.
  2. Предустановленная LogintercePtor для печати журналов запросов / ответов и управления cookieManager перехватчиками Пирожка, разработчики могут использовать по мере необходимости, такие как:
Читайте также:
Wo mic client что это за программа

dio.interceptors ..add(LogInterceptor(responseBody: false)) ..add(CookieManager(CookieJar())); Копировать код

FormData

В случае подачи FormData, FormData будет передано в двоичный массив, а затем представить, что является относительно большим , когда объем данных в FormData (например, в том числе несколько больших файлов) сравниваются в процессе загрузки.. 2.1 Наша команда FormData была усовершенствована, добавьте атрибут поток в FormData, который может превратить FormData в поток, не нужно загружать в память в то время, когда не совершал.

БОРЮСЬ С ГУСЁМ ЗА СВОЙ КОМПЬЮТЕР

В то же время, FormData также добавил asBytes() 、 asBytesAsync() 、 length Методы, атрибуты.

Response

Добавить несколько полей о информации переназначения, есть isRedirect 、 redirects 、 realUri 。

TransFormer

2.X добавляется к DefaultTransformer. jsonDecodeCallback Через него можно настроить JSON декодер, это очень полезно в трепетание, мы можем передать compute Метод для выполнения JSON-декодирования в фоновом режиме, тем самым избегая коробки интерфейса, вызванные в потоке пользовательского интерфейса для декодирования сложного JSON. Для получения дополнительной информации, пожалуйста, смздесь 。

HttpClientAdapter

HttpClientAdapter является мостом между DIO и HTTPClient. 2.0 слои Аннотация Адаптер может принести два основных преимущества:

  1. Реализация Дио развязку HTTPClient, который может быть легко переключаться и настраивает базовую сетевую библиотеку.
  2. Может Макет данных;

DIO реализует набор стандартов, мощный API, и HTTPClient является объектом, который действительно инициирует HTTP запросы. Два не фиксированы один-на-один отношений, мы можем полностью передать другие библиотеки сети при использовании DIO (не только DART HttpClient ) Инициировать сетевой запрос. Мы будем декупли Dio и httpClient через httpClientadapter, чтобы мы могли свободно настроить базовую реализацию HTTP-запросов. Например, в трепетании мы можем пересылать HTTP-запросы на нажатие на пользовательских httpclientadapter, а затем инициировать запросы на юридических условиях. Например, если один день OKHTTP предоставляет версию DART, вы хотите использовать OKHTTT для инициирования HTTP-запросов, вы можете легко переключаться на OKHTTP через адаптер, чтобы не изменить предыдущий код.

Диологическое использование DefaultHttpClientAdapter Как по умолчанию httpClientadapter, DefaultHttpClientAdapter использовать dart:io:HttpClient Инициировать сетевой запрос.

здесь Существует пример простого пользовательского адаптера, и читатель может ссылаться. Кроме того, автоматизированный тестовый случай этого проекта настроен.MockAdapterЧтобы имитировать сервер для возврата данных.

Options

Options Объект содержит конфигурации для сетевых запросов, в которых используется конфигурация случая или один запрос, используется ли настройка экземпляра или один запрос. Options Объекты, это принесет некоторое неудовлетворительное, и даже иногда заставит разработчики чувствовать себя озадаченным, таким как Options.baseUrl Атрибут представляет собой базовый адрес запроса, теоретически его следует устанавливать только в конфигурации экземпляра и не должен отображаться в конфигурации каждого запроса; Options.path Атрибут, он представляет относительный путь запроса, не должен находиться в конфигурации запроса экземпляра. 2.1 будет удален на три класса по запросу.

Название класса эффект
BaseOptions Конфигурация базы диакванамента DiO, по умолчанию для всех запросов для этого экземпляра DIO
Options Конфигурация отдельной запроса, вы можете перезаписать атрибут того же имена в BASTOPTIONS
RequestOptions Окончательная конфигурация запроса — это объединенный вариант и базовы

Кроме того, были добавлены некоторые новые элементы конфигурации:

  1. cookies : Вы можете добавить некоторые публичные печенья
  2. receiveDataWhenStatusError : Когда код состояния ответа не является статусом успеха (например, 404), принимается ли содержимое ответа, если false ,но response.data Будет нулевой
  3. maxRedirects : Перенаправьте максимальное количество раз.

Финансируется в: HTTPS: //juejin.im/post/5c871b256fb9a049bb7d2c32

Читайте также:
Root для Samsung galaxy что это за программа

Источник: russianblogs.com

Программное обеспечение

Программа «DIO_Archiver» ПО «DIO_Archiver»- программа чтения архива и формирования отчетов предназначена для чтения архивов с тепловычислителей DIO-99M и их обработки на ПК Настройка модема В программе «DIO_Archiver», программирование модемов производится непосредственно из. »

Теплосчетчик ДИО-99М — как снять показания? Теплосчетчик ДИО-99М — как и чем снимать показания? Для снятия показаний с теплосчетчика дио 99 вам понадобится накопительный пульт ПН-1 или модем, компьютер или ноутбук с установленной программой DIO_Archiver. Скачать бесплатно программу для снятия. »

«МастерФлоу-Сервис» Сервисная программа для проведения градуировки (поверки) преобразователей расхода вихревых электромагнитных ВЭПС, ВПС и электромагнитных МастерФлоу (МФ) Руководство. »

Источник: konvent-mf.ru

Сетевые вызовы во флаттере

Каждое мобильное приложение должно взаимодействовать с внешним API через Интернет, чтобы предоставлять дополнительные функции, улучшающие взаимодействие с пользователем и расширяющие набор функций приложения. Это может включать аутентификацию, настраиваемую бизнес-логику, загрузку файлов и т. Д.

Большинство разработчиков Flutter используют для этого пакет http . Хотя это работает, существует более лучший, менее известный пакет под названием Dio.

Dio — это мощный HTTP-клиент для Dart, который поддерживает перехватчики, глобальную конфигурацию, FormData, отмену запроса, загрузку файлов, тайм-аут и т. Д.

Содержание —

  1. Установка и настройка
  2. Основные запросы
  3. FormData и загрузка файлов
  4. Перехватчики
  5. Шаблонный проект

1. Установка и настройка

Чтобы добавить Dio в свой проект флаттера, просто добавьте следующую строку в свой pubspec.yaml файл —

dependencies: dio: ^3.0.9

А затем запустите — flutter pub get , если ваш редактор кода не получает автоматически зависимости для вас.

Чтобы использовать Dio, просто создайте экземпляр Dio, вызвав конструктор —

import ‘package:dio/dio.dart’; Dio dio = new Dio();

2. Основные запросы

Давайте сначала рассмотрим базовые запросы, GET , POST , PUT и DELETE . Я собираюсь создать отдельные функции для каждого типа запроса, чтобы мы могли повторно использовать их с дополнительными деталями во вспомогательном классе, который мы компилируем в конце этого поста.

void getHTTP(String url) async < try < Response response = await dio.get(url); // Do whatever > on DioError catch (e) < // Do whatever >> void postHTTP(String url, Map data) async < try < Response response = await dio.

post(url, data: data); // Do whatever > on DioError catch (e) < // Do whatever >> void putHTTP(String url, Map data) async < try < Response response = await dio.put(url, data: data); // Do whatever > on DioError catch (e) < // Do whatever >> void deleteHTTP(String url) async < try < Response response = await dio.

delete(url); // Do whatever > on DioError catch (e) < // Do whatever >>

3. FormData и загрузка файлов

Большинству приложений необходимо отправлять файлы / изображения на сервер как multipart/form-data , и этого очень легко добиться с помощью Dio благодаря всем классам и методам, доступным в пакете Dio.

// Single File with Additional Data FormData formData = FormData.fromMap(< «name»: «Ryan Dsilva», «age»: 21, «file»: await MultipartFile.fromFile(«PATH», filename:»OPTIONAL»), >); // Multiple Files with Additional Data FormData formData = FormData.fromMap(< «name»: «Ryan Dsilva», «age»: 21, «files»: [ await MultipartFile.fromFile(«PATH», filename:»OPTIONAL»), MultipartFile.fromFileSync(«PATH», filename:»OPTIONAL») ], >);

Для всех, кто хочет использовать синхронную версию чтения файла, есть функция MultipartFile.fromFileSync() , которую можно использовать без ключевого слова async .

Затем этот объект FormData может быть отправлен как полезная нагрузка в POST и PUT запросах, как обычно.

ПРЕДОСТЕРЕЖЕНИЯ — при отправке нескольких файлов ключ в formData отправляется как files[] , а не files , т.е. квадратные скобки включены. Поэтому, если у вас возникнут проблемы с вашим API, не используйте конструктор fromMap() для FormData, создайте его самостоятельно. Я потратил немало часов на выяснение этой крошечной детали.

4. Перехватчики

Почти каждый современный API защищен веб-токенами JSON, и практика прикрепления токена авторизации к заголовку сейчас считается стандартной. И Dio, и обычные пакеты http позволяют добавлять заголовки к запросам, но у Dio есть кое-что более интересное под названием Перехватчики.

Читайте также:
Что это за программа kies

Перехватчики — это блоки кода, которые выполняются до ожидаемого действия, то есть перехватывают действие до завершения. Перехватчики можно запускать в 3 местах — onRequest , onResponse и onError .

Перехватчики применяются к каждому запросу, ответу или ошибке, если они настроены, как показано ниже. Некоторые распространенные варианты использования перехватчиков — это авторизация с использованием веб-токенов JSON, анализ JSON и т. Д. Общая структура перехватчиков показана ниже —

dio.interceptors.add(InterceptorsWrapper( onRequest:(RequestOptions options) async < // Do something before the request is sent return options; >, onResponse:(Response response) async < // Do something with response data return response; >, onError: (DioError e) async < // Do something with response error return e; > ));

В случае присоединения веб-токена JSON перехватчик можно записать следующим образом:

Dio addInterceptors(Dio dio) < return dio ..interceptors.add(InterceptorsWrapper( onRequest: (RequestOptions options) =>reqInterceptor(options), onError: (DioError e) async < return e.response.data; >), ); > dynamic reqInterceptor(RequestOptions options) async < // Fetching JWT logic const token = »; options.headers.addAll(); return options; >

reqInterceptor() извлекает JWT из приложения и добавляет его в заголовки запроса.

5. Boilerplate a.k.a Template.

Если вы прошли через все эти разделы, то знаете, что это может привести к появлению большого количества шаблонного кода даже с синтаксическим сахаром, который приносит Dio, и, следовательно, я почувствовал необходимость создания вспомогательного класса, который я мог бы повторно использовать для каждого проекта — подробнее сравнимо с своего рода шаблоном. Этот единственный файл может быть создан в каждом проекте Flutter, и у вас есть настройка Dio, и он готов к работе. Это также помогает сохранить код удобочитаемым и удобочитаемым.

Вот весь вспомогательный класс —

Вот важные разделы файла —

  • BaseOptions — это глобальные настройки, которые можно использовать для всех запросов. Такие вещи, как базовый URL-адрес, тип ответа, таймауты и т. Д., Могут быть установлены здесь как глобальные переменные.
  • Перехватчики — любые настраиваемые перехватчики, которые должны запускаться перед запросом / ответом / ошибкой. Прикрепить JWT почти не составляет труда для большинства людей и, вероятно, является наиболее распространенным вариантом использования для большинства приложений.
  • Методы — стандартные HTTP-методы GET , POST , PUT и DELETE , окруженные блоком try..catch , который улавливает объект DioError . Таким образом Dio обертывает любые возникающие ошибки.

Чтобы использовать этот класс, просто создайте объект, а затем вызовите соответствующие методы везде, где вам нужно —

ApiBaseHelper api = ApiBaseHelper(); Response res = api.get(‘ENDPOINT_URL’);

Вот и все! Надеюсь, вы узнали что-то новое и с нетерпением ждете возможности попробовать Дио в своем следующем проекте Flutter. Большое вам спасибо, если вы зашли так далеко. Поделитесь этой статьей, если она вам помогла, и мы будем благодарны за любые отзывы.

Я скоро вернусь с новым контентом! Следуйте за мной на GitHub, чтобы быть в курсе моих последних проектов —

Источник: digitrain.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru