Şəbəkə: http və dio
Flutter-də iki yayğın seçim var:
- `http` — Dart komandasının rəsmi, minimal paketi. Sadə sorğular üçün kifayətdir
- `dio` — daha zəngin: interceptor-lar, sorğu ləğvi (cancel token), timeout konfiqurasiyası, form-data, avtomatik retry əlavələri
Seçim meyarı sadədir: interceptor (məsələn hər sorğuya token əlavə etmək, 401-də token yeniləmək) və ya sorğu ləğvi lazımdırsa — dio; sadəcə bir neçə GET/POST varsa — http artıq asılılıq gətirmir.
Hər iki halda sorğular repository-nin arxasında qalmalıdır — widget birbaşa HTTP çağırmır.
Real şəbəkə kodunda nəzərə alınmalı olan şeylər sorğu göndərməkdən çoxdur:
- Timeout — default olaraq sorğu çox uzun asılı qala bilər; həmişə açıq timeout ver
- Status kodları — 2xx uğur, 401 auth, 404 tapılmadı, 5xx server; hər biri fərqli davranış tələb edir
- Token yeniləmə — 401 gələndə token-i yeniləyib sorğunu təkrarlamaq; interceptor bunun üçün ideal yerdir
- Ləğv etmə — istifadəçi ekrandan çıxanda gedən sorğunu dayandırmaq
- Retry — yalnız idempotent sorğular üçün; POST-u kor-koranə təkrarlamaq ikiqat sifariş yarada bilər
Interview ipucu. "Token-i necə idarə edirsən?" sualı demək olar həmişə gəlir. Güclü cavab: token-i hər sorğuya əl ilə əlavə etmirəm — interceptor bunu bir yerdə edir; 401 cavabında interceptor token-i yeniləyib sorğunu təkrarlayır; paralel gələn bir neçə 401 üçün yeniləməni bir dəfə etmək (növbəyə salmaq) lazımdır, əks halda eyni anda beş yeniləmə sorğusu gedir. Bu sonuncu detal təcrübəni göstərir.
📚 Mənbələr və sənədlər
- Şəbəkə ilə işrəsmidocs.flutter.dev
- http paketirəsmipub.dev
- dio paketipub.dev
Interceptor, CancelToken və timeout konfiqurasiyası README-də nümunələrlə verilib.