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);
}
}
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);
...
}
Bu şekilde interceptor'ları örneğin apiKey gibi her isteğe eklememiz gereken bir parametrenin olması gerektiği durumlarda kullanabiliriz.
Top comments (0)