패키지, 저장소 및 앱 카테고리 검색

패키지 상세v2.0.8

dio_retry_plus

실패한 요청을 다시 시도하는 dio용 플러그인입니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
837
좋아요
29
Pub 점수
120

패키지 설치

flutter pub add dio_retry_plus

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

dio_retry_plus는 인기 있는 HTTP 클라이언트인 Dio를 확장하여 실패한 요청에 대해 자동 재시도 기능을 추가하는 Flutter 패키지입니다. 오류 유형, 상태 코드 또는 타임아웃과 같은 구성 가능한 조건에 따라 요청을 다시 시도함으로써 네트워크 작업의 신뢰성을 향상시킵니다. 이 플러그인은 다양한 재시도 전략과 백오프 메커니즘을 지원하며, 강력한 네트워크 회복력을 필요로 하는 애플리케이션에 적합합니다. 기존의 Dio 설정과 원활하게 통합되며 Android, iOS, Web, macOS, Windows, Linux 등 모든 주요 플랫폼에서 작동합니다.

사용 사례

  • 일시적인 네트워크 장애 처리
  • API 호출 신뢰성 향상
  • 실패한 요청으로 인한 사용자 불만 감소
  • 오프라인 우선 앱 패턴 지원
  • 백그라운드 작업에 대한 재시도 로직 자동화

주요 기능

  • 사용자 정의 재시도 조건
  • 지수 백오프 지원
  • 재시도 한도 사용자 정의
  • Dio 미들웨어와의 통합
  • 시간 초과 또는 연결 오류 시 자동 재시도

적합한 대상

  • 신뢰할 수 없는 네트워크 연결을 가진 앱
  • 장애 내성 필요 API 클라이언트
  • 백그라운드 데이터 동기화 서비스
  • 실시간 데이터 가져오기 애플리케이션
  • HTTP 작업에 Dio를 사용하는 개발자

고려 사항

  • 재시도가 지나치게 자주 발생하면 지연이 증가할 수 있습니다
  • 무한 루프를 방지하기 위해 신중한 구성이 필요합니다
  • 단순 아이디포텐트 작업에 적합하지 않음
  • 모바일 장치의 배터리 수명에 영향을 줄 수 있습니다
  • 시뮬레이션된 네트워크 장애 시나리오에서 테스트 필요

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

dio_retry_plus

A plugin for dio that retries failed requests.

Usage

import 'package:dio_retry_plus/dio_retry_plus.dart';
Basic configuration
final dio = Dio()
  ..interceptors.add(RetryInterceptor());
Global retry options
final dio = Dio()
  ..interceptors.add(RetryInterceptor(
    options: const RetryOptions(
      retries: 3, // Number of retries before a failure
      retryInterval: const Duration(seconds: 1), // Interval between each retry
      retryEvaluator: (error) => error.type != DioErrorType.CANCEL && error.type != DioErrorType.RESPONSE, // Evaluating if a retry is necessary regarding the error. It is a good candidate for updating authentication token in case of a unauthorized error (be careful with concurrency though)
    )
  )
);
Sending a request with options
final response = await dio.get("http://www.flutter.dev", options: Options(
    extra: RetryOptions(
      retryInterval: const Duration(seconds: 10),
    ).toExtra(),
  ));
Sending a request without retry
final response = await dio.get("http://www.flutter.dev", options: Options(
    extra: RetryOptions.noRetry().toExtra(),
  ));
Logging retry operations
final dio = Dio()
  ..interceptors.add(RetryInterceptor(logger: Logger("Retry")));

Features and bugs

Please file issues.

카테고리

의존성

의존성 목록 1 개

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.