execute<T> method
执行请求(带去重/防抖/节流)
method HTTP 方法
path 请求路径
queryParameters 查询参数
data 请求体数据
baseUrl 可选的 baseUrl(用于去重时区分不同服务)
requestExecutor 实际执行请求的函数
返回 Future,相同请求会共享同一个 Future
Implementation
Future<T> execute<T>({
required String method,
required String path,
Map<String, dynamic>? queryParameters,
dynamic data,
String? baseUrl,
required Future<T> Function() requestExecutor,
}) async {
final requestKey = _generateRequestKey(
method: method,
path: path,
queryParameters: queryParameters,
data: data,
baseUrl: baseUrl,
);
switch (mode) {
case DeduplicationMode.deduplication:
return _executeWithDeduplication<T>(requestKey, requestExecutor);
case DeduplicationMode.debounce:
return _executeWithDebounce<T>(requestKey, requestExecutor);
case DeduplicationMode.throttle:
return _executeWithThrottle<T>(requestKey, requestExecutor);
case DeduplicationMode.none:
return requestExecutor();
}
}