getCached<T> method
Enhanced GET with caching and retry
Implementation
Future<Response<T>> getCached<T>(
String url, {
Map<String, String>? headers,
String? contentType,
Map<String, dynamic>? query,
Decoder<T>? decoder,
bool useCache = true,
}) async {
_checkIfDisposed();
if (useCache && enableCaching) {
final cacheKey = _generateCacheKey(url, query);
final cached = _getCachedResponse<T>(cacheKey);
if (cached != null) {
if (enableLogging) {
debugPrint('Cache hit for: $cacheKey');
}
return cached.response;
}
}
final response = enableRetry
? await _retryRequest(
() => httpClient.get<T>(
url,
headers: headers,
contentType: contentType,
query: query,
decoder: decoder,
),
)
: await httpClient.get<T>(
url,
headers: headers,
contentType: contentType,
query: query,
decoder: decoder,
);
if (useCache && enableCaching && response.isOk) {
final cacheKey = _generateCacheKey(url, query);
_cacheResponse(cacheKey, response);
if (enableLogging) {
debugPrint('Cached response for: $cacheKey');
}
}
return response;
}