Flutter Dio Paketi — İhtiyaçlarınıza Göre Ayarlanabilen HTTP İstemciniz

Cenker Kumlucalı
3 min readJul 24, 2023

--

Selamlar Flutter dostları! Bugün, birçok Flutter uygulamasının ayrılmaz parçası haline gelen, popüler HTTP istemcisi Dio paketini ayrıntılı bir şekilde inceleyeceğiz.

Dio Paketi Nedir?

Flutter’da HTTP isteklerini yapmak için birçok yol vardır ancak Dio, geniş özelleştirme seçenekleri, kullanım kolaylığı ve gelişmiş özellikleri ile bir adım öne çıkar. Dio, RESTful API’lerle çalışmanızı sağlar ve standart HTTP istekleri (GET, POST, DELETE, PUT vb.) için basit bir API sağlar.

Dio Paketini Kurulum

Dio paketi, pub.dev üzerinden edinilebilir. Dio’yu projenize eklemek için pubspec.yaml dosyanızın dependencies kısmına aşağıdaki kodu eklemelisiniz:

dependencies:
dio: ^4.0.0

Daha sonra terminalde flutter pub get komutunu çalıştırarak paketi projenize dahil edebilirsiniz.

Dio ile Basit Bir GET İsteği

Dio kullanarak bir HTTP GET isteği yapmak oldukça basittir. Aşağıda, ‘https://jsonplaceholder.typicode.com/posts' adresinden veri çeken bir GET isteği örneği verilmiştir:

import 'package:dio/dio.dart';

void getPosts() async {
Dio dio = Dio();
Response response = await dio.get('https://jsonplaceholder.typicode.com/posts');
print(response.data);
}

Yukarıdaki örnekte, öncelikle Dio nesnesi oluşturulur. Daha sonra dio.get() metodu ile belirtilen URL'ye GET isteği yapılır. Sonuç olarak, elde edilen yanıtı response.data üzerinden konsola yazdırırız.

Dio ile Basit Bir POST İsteği

POST istekleri, genellikle sunucuya yeni bir veri eklerken kullanılır. Aşağıda, Dio ile POST isteği yapma örneğini bulabilirsiniz:

import 'package:dio/dio.dart';

void createPost() async {
Dio dio = Dio();
Response response = await dio.post(
'https://jsonplaceholder.typicode.com/posts',
data: {
'title': 'Flutter Dio',
'body': 'Dio paketi ile POST isteği',
'userId': 1,
},
);
print(response.data);
}

POST isteği yaparken genellikle data parametresi kullanılır. Bu parametre, sunucuya gönderilecek olan veriyi içerir. Yukarıdaki örnekte, title, body ve userId alanlarından oluşan bir veri gönderiyoruz.

İsteklerinizi Özelleştirmek

Dio’nun en büyük avantajlarından biri, isteklerinizi özelleştirme yeteneğidir. Örneğin, belirli bir zaman aşımı süresi ayarlayabilir, özel bir HTTP başlığı ekleyebilir veya özel bir hata işleyicisi kullanabilirsiniz. Aşağıda, özelleştirilmiş bir Dio istemcisi örneğini görebilirsiniz:

import 'package:dio/dio.dart';

Dio createDio() {
return Dio(
BaseOptions(
baseUrl: 'https://jsonplaceholder.typicode.com',
connectTimeout: 5000,
receiveTimeout: 3000,
headers: {
'customHeader': 'header value',
},
),
);
}

void customRequest() async {
Dio dio = createDio();
Response response = await dio.get('/posts');
print(response.data);
}

Bu örnekte, baseUrl gibi birçok temel ayarın yanı sıra connectTimeout, receiveTimeout ve özel bir HTTP başlığı da ekledik. Daha sonra, bu özelleştirilmiş Dio istemcisini kullanarak GET isteği yaptık.

  • connectTimeout: Bu ayar, Dio'nun bir HTTP isteği oluştururken bağlantının oluşturulması için ne kadar süre bekleyeceğini belirtir. Bu değer milisaniye cinsinden belirlenir. Örneğin, connectTimeout değeri 5000 olarak ayarlandığında, Dio'nun bir HTTP isteğini oluştururken bağlantının kurulması için en fazla 5 saniye bekleyecektir. Bu süre sonunda bağlantı hala kurulmamışsa, Dio bir DioErrorType.connectTimeout hatası fırlatır.
  • receiveTimeout: Bu ayar, Dio'nun HTTP yanıtını beklerken ne kadar süre bekleyeceğini belirtir. Bu değer de milisaniye cinsinden belirlenir. Örneğin, receiveTimeout değeri 3000 olarak ayarlandığında, Dio bir HTTP yanıtını beklerken en fazla 3 saniye bekleyecektir. Bu süre sonunda yanıt hala alınmamışsa, Dio bir DioErrorType.receiveTimeout hatası fırlatır.

Her iki zaman aşımı ayarı da, ağ bağlantınızın hızına ve isteğinizin beklenen yanıt süresine bağlı olarak uyarlanabilir. Bunlar, Dio’nun hataları ele almasına ve uygulamanızın ağ isteklerini daha iyi yönetmesine yardımcı olabilir.

Bu ayarları kullanarak, ağ isteklerinizi daha fazla kontrol altına alabilir ve uygulamanızın kullanıcı deneyimini iyileştirebilirsiniz.

Sonuç

Flutter’da HTTP istekleri yaparken Dio paketi, geniş özelleştirme seçenekleri ve kullanım kolaylığı ile dikkat çeker. Geniş özellik yelpazesi, Dio’yu API isteklerini yönetirken vazgeçilmez bir araç haline getirir. Bu makalede Dio’nun temel kullanımlarını ve özelleştirme seçeneklerini ele aldık. Ancak Dio, yüklemeleri izleme, hata işleme, çerez yönetimi ve daha pek çok özellik sunar. Dio’nun tüm özelliklerini keşfetmek için resmi dokümantasyonu ziyaret edebilirsiniz.

Umarım bu makale, Dio paketi hakkında genel bir bakış sağlar ve HTTP isteklerini yönetirken size yardımcı olur. Her zaman olduğu gibi, her türlü sorunuz veya yorumunuz için buradayım. İyi kodlamalar!

--

--

No responses yet