onRequest method

  1. @override
void onRequest(
  1. AdapterRequest request,
  2. RequestInterceptorHandler handler
)
override

请求拦截

在请求发送前调用,可以修改请求或直接返回响应

request 请求配置 handler 拦截器处理器

Implementation

@override
void onRequest(AdapterRequest request, RequestInterceptorHandler handler) {
  final key = _generateKey(request);

  if (_pendingRequests.containsKey(key) && _timers.containsKey(key)) {
    handler.reject(AdapterException(
      message: 'Duplicate request blocked: $key',
      type: AdapterExceptionType.cancel,
      originalError: 'DeduplicateInterceptor',
    ));
    return;
  }

  _pendingRequests[key] = Completer<void>();
  _timers[key]?.cancel();
  _timers[key] = Timer(duration, () {
    _cleanup(key);
  });

  handler.next(request);
}