dio_debugger 0.1.0 copy "dio_debugger: ^0.1.0" to clipboard
dio_debugger: ^0.1.0 copied to clipboard

Lightweight utility to attach a reverse/forward proxy to an existing Dio instance for local debugging.

dio_debugger #

Независимый утилитный пакет, который патчит переданный Dio и подключает reverse‑proxy интерсептор. Удобно для локальной отладки, перехвата трафика и обхода CORS/сертификатов через ваш локальный прокси.

Возможности #

  • Подключение одной строчкой: DioDebugger.attach(dio)
  • Источники настроек (приоритет):
    1. Аргументы attach
    2. --dart-define (UPSTREAM_BASE_URL, PROXY_BASE_URL, PROXY_HTTP_PATH, DIO_DEBUGGER_ENABLED/HTTP_PROXY_ENABLED)
    3. OS ENV (через условный импорт; web-safe)
  • Обработка абсолютных URL в RequestOptions.path — если path уже http(s)://…, проксируется как есть.
  • Порядок интерсепторов: insertFirst (по умолчанию true) — ставит интерсептор первым.
  • Исключения/фильтры: skip*/allow* по путям/хостам/методам.

Установка #

Добавьте зависимость в ваш pubspec.yaml:

dependencies:
  dio: ^5.4.0
  dio_debugger:
    path: ../packages/dio_debugger

Быстрый старт #

import 'package:dio/dio.dart';
import 'package:dio_debugger/dio_debugger.dart';

final dio = Dio(BaseOptions(baseUrl: 'https://41098f05e20d.ngrok-free.app'));
// Явное подключение с параметрами прокси
DioDebugger.attach(
  dio,
  upstreamBaseUrl: 'https://41098f05e20d.ngrok-free.app',
  proxyBaseUrl: 'http://localhost:9091',
  proxyHttpPath: '/httpproxy',
);

Расширенные опции #

DioDebugger.attach(
  dio,
  insertFirst: true,         // поставить интерсептор первым
  enabled: null,             // если null — берётся из env: DIO_DEBUGGER_ENABLED/HTTP_PROXY_ENABLED (true|1|yes|on)
  skipPaths: ["/metrics"],  // не проксировать эти пути
  skipHosts: ["auth.local"],
  skipMethods: ["OPTIONS"],
  allowPaths: null,          // если задан allow*, то проксируются только совпадающие
  allowHosts: null,
  allowMethods: null,
  upstreamBaseUrl: 'https://41098f05e20d.ngrok-free.app',
  proxyBaseUrl: 'http://localhost:9091',
  proxyHttpPath: '/httpproxy',
);

Примеры конфигурации #

  • Через --dart-define:
--dart-define=UPSTREAM_BASE_URL=https://dev.api.padelme.app \
--dart-define=PROXY_BASE_URL=http://localhost:9091 \
--dart-define=PROXY_HTTP_PATH=/httpproxy \
--dart-define=DIO_DEBUGGER_ENABLED=true
  • Через OS ENV (на платформах с dart:io):
UPSTREAM_BASE_URL=https://dev.api.padelme.app
PROXY_BASE_URL=http://localhost:9091
PROXY_HTTP_PATH=/httpproxy
DIO_DEBUGGER_ENABLED=true

После подключения запрос GET /path пойдёт на:

http://localhost:9091/httpproxy?_target=https://dev.api.padelme.app/path

Если options.path уже абсолютный http(s)://…, он проксируется без склейки с upstreamBaseUrl.

Заметки #

  • На стороне прокси должен существовать endpoint /httpproxy, который принимает query _target и форвардит запрос дальше.
  • Если upstreamBaseUrl или proxyBaseUrl пустые, пакет ничего не меняет (безопасно для прод).
  • Если прокси указан без схемы и с портом :443, автоматически будет использован https.

Лицензия #

MIT

0
likes
0
points
160
downloads

Publisher

unverified uploader

Weekly Downloads

Lightweight utility to attach a reverse/forward proxy to an existing Dio instance for local debugging.

Repository (GitHub)
View/report issues

Topics

#dio #http #debug #proxy #reverse

License

unknown (license)

Dependencies

dio

More

Packages that depend on dio_debugger