ispectify_dio 4.2.0
ispectify_dio: ^4.2.0 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 Setup #
final Dio dio = Dio(
BaseOptions(
baseUrl: 'https://api.example.com',
),
);
// Initialize in ISpect.run onInit callback
ISpect.run(
() => runApp(MyApp()),
logger: iSpectify,
onInit: () {
dio.interceptors.add(
ISpectifyDioLogger(
iSpectify: iSpectify,
settings: const ISpectifyDioLoggerSettings(
printRequestHeaders: true,
),
),
);
},
);
Advanced Configuration with Filters #
dio.interceptors.add(
ISpectifyDioLogger(
iSpectify: iSpectify,
settings: const ISpectifyDioLoggerSettings(
printRequestHeaders: true,
// Filter specific requests
// requestFilter: (requestOptions) =>
// requestOptions.path != '/sensitive-endpoint',
// Filter specific responses
// responseFilter: (response) => response.statusCode != 404,
// Filter specific errors
// errorFilter: (error) => error.response?.statusCode != 404,
),
),
);
Multiple Dio Instances #
// Main API client
final Dio mainDio = Dio(
BaseOptions(baseUrl: 'https://api.example.com'),
);
// File upload client
final Dio uploadDio = Dio(
BaseOptions(baseUrl: 'https://upload.example.com'),
);
// Add interceptors to both
mainDio.interceptors.add(
ISpectifyDioLogger(iSpectify: iSpectify),
);
uploadDio.interceptors.add(
ISpectifyDioLogger(iSpectify: iSpectify),
);
📦 Installation #
Add ispectify_dio to your pubspec.yaml
:
dependencies:
ispectify_dio: ^4.1.4
🚀 Quick Start #
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:ispect/ispect.dart';
import 'package:ispectify_dio/ispectify_dio.dart';
final Dio dio = Dio(
BaseOptions(
baseUrl: 'https://jsonplaceholder.typicode.com',
),
);
void main() {
final ISpectify iSpectify = ISpectifyFlutter.init();
ISpect.run(
() => runApp(MyApp()),
logger: iSpectify,
onInit: () {
// Add ISpectify Dio interceptor
dio.interceptors.add(
ISpectifyDioLogger(
iSpectify: iSpectify,
settings: const ISpectifyDioLoggerSettings(
printRequestHeaders: true,
),
),
);
},
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('ISpectify Dio Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
// All Dio requests will be automatically logged
dio.get<dynamic>('/posts/1');
},
child: const Text('Send GET Request'),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
// Error requests are also logged
dio.get<dynamic>('/invalid-endpoint');
},
child: const Text('Send Error Request'),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
// Upload file with FormData
final FormData formData = FormData();
formData.files.add(MapEntry(
'file',
MultipartFile.fromBytes(
[1, 2, 3],
filename: 'file.txt',
),
));
dio.post<dynamic>('/upload', data: formData);
},
child: const Text('Upload File'),
),
],
),
),
),
);
}
}
📚 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