ispectify_dio 4.1.3-dev13
ispectify_dio: ^4.1.3-dev13 copied to clipboard
An additional package for Dio (logging and handling).
π Overview #
ISpectify Dio provides seamless integration between Dio HTTP client and the ISpectify logging system.
π HTTP Logging β’ π Response Tracking β’ β Error Handling β’ β‘ Performance
Streamline your HTTP debugging workflow by automatically capturing and logging all Dio HTTP client interactions. Perfect for monitoring API calls, debugging network issues, and tracking performance metrics.
π― Key Features #
- π HTTP Request Logging: Automatic logging of all Dio requests
- π Response Tracking: Detailed response logging with timing information
- β Error Handling: Comprehensive error logging with stack traces
- π Request Inspection: Headers, body, and parameter logging
- β‘ Performance Metrics: Request/response timing and size tracking
- ποΈ Configurable: Flexible configuration options for different environments
π§ Configuration Options #
Basic Configuration #
final interceptor = ISpectifyDioInterceptor(
ispectify: ispectify,
settings: ISpectifyDioSettings(
// Request logging
printRequestHeaders: true,
printRequestBody: true,
// Response logging
printResponseHeaders: true,
printResponseBody: true,
// Error handling
printErrorDetails: true,
// Performance
trackRequestTime: true,
),
);
Advanced Filtering #
final interceptor = ISpectifyDioInterceptor(
ispectify: ispectify,
settings: ISpectifyDioSettings(
// Filter sensitive headers
headerFilter: (headers) => headers..remove('Authorization'),
// Filter request bodies
requestBodyFilter: (body) {
if (body is Map) {
return Map.from(body)..remove('password');
}
return body;
},
// Custom log levels
requestLogLevel: LogLevel.debug,
responseLogLevel: LogLevel.info,
errorLogLevel: LogLevel.error,
),
);
π¦ Installation #
Add ispectify_dio to your pubspec.yaml:
dependencies:
ispectify_dio: ^4.1.3-dev13
π Quick Start #
import 'package:dio/dio.dart';
import 'package:ispectify_dio/ispectify_dio.dart';
import 'package:ispectify/ispectify.dart';
void main() {
final ispectify = ISpectify();
// Create Dio instance with ISpectify interceptor
final dio = Dio()
..interceptors.add(
ISpectifyDioInterceptor(
ispectify: ispectify,
settings: ISpectifyDioSettings(
printRequestHeaders: true,
printResponseHeaders: true,
printRequestBody: true,
printResponseBody: true,
),
),
);
// All HTTP requests will be automatically logged
final response = await dio.get('https://api.example.com/data');
}
βοΈ Advanced Features #
Custom Log Formatting #
final interceptor = ISpectifyDioInterceptor(
ispectify: ispectify,
settings: ISpectifyDioSettings(
requestFormatter: (request) => 'API Call: ${request.method} ${request.uri}',
responseFormatter: (response) => 'Response: ${response.statusCode} (${response.data?.length ?? 0} bytes)',
),
);
Environment-based Configuration #
final interceptor = ISpectifyDioInterceptor(
ispectify: ispectify,
settings: kDebugMode
? ISpectifyDioSettings.debug() // Full logging in debug
: ISpectifyDioSettings.production(), // Minimal logging in production
);
Multiple Dio Instances #
// API client
final apiDio = Dio()
..interceptors.add(
ISpectifyDioInterceptor(
ispectify: ispectify,
tag: 'API',
),
);
// Analytics client
final analyticsDio = Dio()
..interceptors.add(
ISpectifyDioInterceptor(
ispectify: ispectify,
tag: 'Analytics',
),
);
π Examples #
See the example/ directory for complete integration examples with different Dio configurations.
ποΈ Architecture #
ISpectifyDio integrates with the Dio HTTP client through interceptors:
| Component | Description |
|---|---|
| Dio Interceptor | Captures HTTP requests and responses |
| Request Logger | Logs request details (headers, body, params) |
| Response Logger | Logs response data and timing |
| Error Handler | Captures and logs HTTP errors |
| Performance Tracker | Measures request/response times |
π€ Contributing #
Contributions are welcome! Please read our contributing guidelines and submit pull requests to the main branch.
π License #
This project is licensed under the MIT License - see the LICENSE file for details.
π Related Packages #
- ispectify - Foundation logging system
- ispectify_http - Standard HTTP client integration
- ispect - Main debugging interface
- dio - HTTP client for Dart