DEV Community

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

Posted on • Edited on

2 1

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

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs