Sparround

Şə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