gsd_restapi 0.1.22
gsd_restapi: ^0.1.22 copied to clipboard
This package provides comprehensive REST API functionality for Flutter applications.
GSD-RestAPI #
Dieses Paket bietet umfassende REST-API-Funktionen für Flutter-Anwendungen mit automatischer Session-Verwaltung, Verschlüsselung, verschiedenen HTTP-Methoden und Firebase Performance Monitoring. Es ermöglicht die strukturierte Kommunikation mit REST-APIs sowohl für Debug-Zwecke als auch für die Produktionsüberwachung.
Features #
- Vollständige HTTP-Unterstützung: GET, POST, PUT, PATCH, DELETE Methoden
- Automatische Session-Verwaltung: Sessions werden automatisch erneuert bei Ablauf
- Sichere Authentifizierung: Login mit MD5-Hash und RSA/AES-Verschlüsselung
- Device-Management: Geräte-spezifische Authentifizierung und Verwaltung
- Firebase Performance Monitoring: Integrierte Performance-Überwachung
- SSL-Fehlerbehandlung: Konfigurierbare SSL-Zertifikatsprüfung
- Timeout-Konfiguration: Separate Timeouts für Verbindung und Response
- Mail-Funktionen: E-Mail erstellen, bearbeiten und versenden
- Termin-Management: Kalender-Funktionen mit Serien-Unterstützung
- Datei-Upload/Download: Umfassende Datei-Operationen
- Error-Handling: Spezifische Exceptions für verschiedene Fehlertypen
- Web-Kompatibilität: Funktioniert sowohl auf mobilen Plattformen als auch im Web
Installation #
Fügen Sie das Paket in Ihrer pubspec.yaml
hinzu:
dependencies:
gsd_restapi: [version]
Führen Sie anschließend flutter pub get
aus, um das Paket zu installieren.
Nutzung #
RestAPI Manager initialisieren #
Erstellen Sie eine Instanz des RestApiManagers mit den erforderlichen Parametern:
import 'package:gsd_restapi/gsd_restapi.dart';
final RestApiDOCUframeManager apiManager = RestApiDOCUframeManager(
'GSD-DFApp', // App Key
'GSDAdmin', // Username
['GSD-RestApi', 'GSD-DFApp'], // App Names
'https://127.0.0.1:8080', // Server URL
'dfapp', // Database Alias
perPageCount: 50,
allowSslError: false,
);
Benutzer anmelden #
try {
// Passwort als MD5-Hash setzen
apiManager.setPassword('098f6bcd4621d373cade4e832627b4f6'); // MD5 für "test"
// Login durchführen
RestApiLoginResponse loginResponse = await apiManager.login(
'098f6bcd4621d373cade4e832627b4f6'
);
if (loginResponse.isOk) {
print('Erfolgreich angemeldet. Session ID: ${apiManager.sessionId}');
}
} catch (e) {
print('Login fehlgeschlagen: $e');
}
Session-Überwachung #
// Session-Status prüfen
try {
RestApiResponse sessionCheck = await apiManager.checkSession();
print('Session ist aktiv: ${sessionCheck.isOk}');
} catch (e) {
print('Session ungültig: $e');
}
// Service-Status prüfen
RestApiCheckServiceResponse serviceCheck = await apiManager.checkService();
print('Service verfügbar: ${serviceCheck.isOk}');
Event-Handling #
// Session-Änderungen überwachen
apiManager.sessionIdChangedEvent.subscribe((args) {
print('Session ID hat sich geändert');
});
// Authentifizierungsfehler überwachen
apiManager.userAndPassWrongEvent.subscribe((args) {
print('Benutzername oder Passwort falsch');
});
// Lizenzfehler überwachen
apiManager.licenseWrongEvent.subscribe((args) {
print('Lizenzproblem erkannt');
});
HTTP-Methoden #
Das Paket unterstützt alle gängigen HTTP-Methoden:
- GET: Daten abrufen
- POST: Neue Daten erstellen
- PUT: Daten vollständig ersetzen
- PATCH: Daten teilweise aktualisieren
- DELETE: Daten löschen
Sicherheit und Verschlüsselung #
- RSA-Verschlüsselung: Sichere Übertragung von Login-Daten
- AES-Verschlüsselung: Verschlüsselte Kommunikation für sensible Daten
- Session-Management: Automatische Erneuerung abgelaufener Sessions
- SSL-Unterstützung: Konfigurierbare SSL-Zertifikatsprüfung
- MD5-Hash: Passwort-Hashing für sichere Authentifizierung
Error-Handling #
Das Paket bietet spezifische Exception-Typen:
SessionInvalidException
: Session ist ungültig oder abgelaufenTokenOrSessionIsMissingException
: Token oder Session fehltUserAndPassWrongException
: Falsche AnmeldedatenLicenseException
: LizenzproblemeHttpRequestException
: HTTP-spezifische FehlerSecurityException
: SicherheitsproblemeWebServiceException
: Webservice-Fehler
Performance-Monitoring #
import 'package:firebase_performance/firebase_performance.dart';
// Firebase Performance Monitoring aktivieren
FirebasePerformance performance = FirebasePerformance.instance;
RestApiDOCUframeManager apiManager = RestApiDOCUframeManager(
// ... andere Parameter
firebasePerformance: performance,
);
Konfiguration #
Timeout-Einstellungen #
// Timeouts werden intern verwaltet:
// - Connection Timeout: 5 Sekunden
// - Response Timeout: 10 Minuten
SSL-Konfiguration #
RestApiDOCUframeManager apiManager = RestApiDOCUframeManager(
// ... andere Parameter
allowSslError: true, // SSL-Fehler ignorieren
);
API-Design #
Das Paket folgt dem Prinzip der sauberen Architektur:
- ✅
RestApiManager
- Hauptklasse für alle API-Operationen - ✅
RestApiResponse
- Standardisierte Response-Behandlung - ✅
RestApiDevice
- Geräte-Management - ✅
HttpMethod
- Enum für HTTP-Methoden - ❌
_http()
- Private HTTP-Implementierung (nicht zugänglich) - ❌
_performRequest()
- Interne Request-Verarbeitung (nicht zugänglich)
Hinweise #
- Automatische Session-Erneuerung: Abgelaufene Sessions werden automatisch erneuert
- Performance: Requests werden mit Firebase Performance Monitoring überwacht
- Web-Unterstützung: Plattformspezifische HTTP-Client-Implementierung
- Concurrent Requests: Schutz vor doppelten Login-Requests
- Request Caching: Pending Requests werden gecacht um Duplikate zu vermeiden
- Memory Management: HTTP-Clients werden automatisch geschlossen
Dieses Paket ermöglicht die professionelle REST-API-Kommunikation in Ihrer Flutter-Anwendung und bietet umfassende Funktionen für Authentifizierung, Datenmanagement und Performance-Überwachung bei gleichzeitig sauberer und sicherer API.