Flutter Uygulamalarında API Entegrasyonu ve Yapısı Nasıl Kurulur?

Alperenkuru
2 min readOct 5, 2023

Bu yazı dil eğitimi üzerine pratik yapmaya olanak sağlayan projemde kullandığım kütüphaneler ve oluşturduğum yapıları yayınladığım bir seriden bir parçadır. Bu yazıda, Flutter uygulamalarında API entegrasyonunu gerçekleştirmek için kullanabileceğiniz bir dizi özel sınıf ve bu sınıfları kullanırken dikkate almanız gereken en önemli noktaları inceleyeceğiz. Ayrıca bu özel sınıfları ve yapıları nasıl kullanacağınızı ayrıntılı bir şekilde ele alacağız.Eğer bu yazı ilginizi çekerse, diğer yazılarıma da göz atmayı unutmayın.

1. ApiCenter Sınıfı: API İsteklerinin Merkezi

Flutter uygulamalarında API çağrılarını düzenli ve yönetilebilir bir şekilde yapmak için ApiCenter adında bir merkezi sınıf kullanıyoruz. Bu sınıf, tüm API isteklerini merkezi bir yerde toplar ve işler.

class ApiCenter {
// API servislerinin çağrıldığı merkezi sınıf
// API istek URL'leri burada tanımlanır
static const String login_Url = "YOUR_LOGIN_API_URL";
static const String signUp_Url = "YOUR_SIGNUP_API_URL";
static const String saveWord_Url = "YOUR_SAVEWORD_API_URL";
// ...

// Örnek login metodu
static Future<dynamic> loginService(String email, String password) async {
// Şifreyi md5 ile şifrele
String hashedPassword = md5.convert(utf8.encode(password)).toString();

// Tam URL'yi oluştur
String loginUrl = "$login_Url/$email/$hashedPassword";

// API isteğini gerçekleştir
http.Response response = await http.get(Uri.parse(loginUrl));
String responseBody = response.body;

try {
// Başarılı cevabı al ve döndür
String responseBody = response.body;
dynamic jsonData = json.decode(responseBody);

if (response.statusCode == 200 && jsonData.isNotEmpty) {
// Kullanıcı bilgilerini çıkart
int id = jsonData[0]['<Id>'] as int;
//diğer değerler

ApiUserResponse userResponse = ApiUserResponse(id, diğer değerler);

// Dosya sisteminde bir dosya oluştur ve kullanıcı bilgilerini kaydet
Directory appDocDir = await getApplicationDocumentsDirectory();
File file = File('${appDocDir.path}/user.txt');
await file.writeAsString(jsonEncode(userResponse.toJson()));

return LoginResult(true, "Successful");
} else {
return LoginResult(false, "UserNotFound");
}
} catch (e) {
return LoginResult(false, "UnexpectedError: $e");
}
}

// Diğer API servislerinin tanımlamaları
// ...
}

API İsteklerinin Kullanımı:

Bu özel sınıfları kullanarak API istekleri yapmak oldukça basittir. Örneğin, kullanıcı girişi yapmak için loginService yöntemini kullanabiliriz:

dynamic response = await ApiCenter.loginService(email, password);

Bu örnekler, Flutter uygulamanızda API çağrılarını düzenli bir şekilde nasıl gerçekleştireceğinizi ve sonuçları nasıl işleyeceğinizi gösterir. Her bir API isteği, ilgili URL’yi ve verileri kullanarak çağrılır ve cevap işlenir. Bu yapı, uygulamanızın daha düzenli ve bakımı daha kolay bir şekilde büyümesine yardımcı olur.

--

--