DEV Community

Cover image for Dio Interceptors
Gülsen Keskin
Gülsen Keskin

Posted on • Edited on

Dio Interceptors

Bir dio interceptor (önleyici), dio nesnesiyle ilgili bir olay gerçekleştiğinde tetiklenen onRequest, onResponse, onError geri çağrılarına (callback) sahip bir nesnedir. Aynı dio nesnesine birden fazla interceptor eklenebilir.

Tüm API isteklerine aynı header grubunun eklenmesi gerekiyorsa, bu, dio interceptor'ları aracılığıyla verimli bir şekilde yapılabilir.

Örneğin her istekte bir zaman damgası göndermemizin gerektiği bir durumu ele alırsak:


import 'package:dio/dio.dart';

class AppendTimestampInterceptor extends Interceptor {
  @override
  void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
    options.queryParameters['ts'] = DateTime.now().millisecondsSinceEpoch.toString();

    return super.onRequest(options, handler);
  }
}
Enter fullscreen mode Exit fullscreen mode

dio nesnesine eklendiğinde, onRequest methodu her requestte ts query parametresini ekler:

// dio_factory.dart

...

class DioFactory {
  const DioFactory(
    ...
    this._appendTimestampInterceptor,
  );

  ...
  final AppendTimestampInterceptor _appendTimestampInterceptor;

  Dio create() => Dio(...)
      ..interceptors.add(_appendTimestampInterceptor);

  ...
}
Enter fullscreen mode Exit fullscreen mode

Bu şekilde interceptor'ları örneğin apiKey gibi her isteğe eklememiz gereken bir parametrenin olması gerektiği durumlarda kullanabiliriz.

Kaynak:
https://medium.com/@foxanna/basic-and-advanced-networking-in-dart-and-flutter-the-tide-way-d922fb65a01c

Top comments (0)