onRequest method

  1. @override
void onRequest(
  1. RequestOptions options,
  2. RequestInterceptorHandler handler
)

Called when the request is about to be sent.

Implementation

@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
  final mockManager = MockManager();

  if (mockManager.isEnabled) {
    // 提取查询参数和请求数据
    final queryParameters = options.queryParameters.cast<String, dynamic>();
    final requestData = options.data;

    final mockData = mockManager.getMockData(
      options.method,
      options.path,
      queryParameters,
      requestData,
    );

    if (mockData != null) {
      // 获取响应数据(可能是动态生成的)
      final responseData = mockData.getData(
        options.method,
        options.path,
        queryParameters,
        requestData,
      );

      // 创建Mock响应
      final response = Response(
        requestOptions: options,
        statusCode: mockData.statusCode,
        data: responseData,
      );

      // 如果有延迟,异步执行
      if (mockData.delay != null) {
        Future.delayed(mockData.delay!, () {
          handler.resolve(response);
        });
      } else {
        handler.resolve(response);
      }
      return;
    }
  }

  super.onRequest(options, handler);
}