Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 5 / 14 Backend ir Retrofit ~50 min
📖 Teorija

Tinklas, Retrofit ir suspend

Iki šiol meniu buvo „iš kodo". Bet tikra Pica picas laiko serveryje — tame Go backende, kurį paleidai 1 pamokoje. Metas prisijungti.

Bendrauti su serveriu naudosim Retrofit — populiariausią HTTP biblioteką Androidui. Jos idėja graži: aprašai sąsają (interface), o Retrofit pats parašo tinklo kodą.

interface PicaApi {
    @GET("menu")
    suspend fun getMenu(): List<MenuItemDto>
}

Kelios sąvokos:

  • suspend — funkcija „pristabdoma" ir vėl tęsiama. Tinklo užklausa lėta, todėl ji vyksta koroutinoje, ne pagrindinėje gijoje (kitaip UI užšaltų).
  • DTO (Data Transfer Object) — kaip duomenys atrodo JSON'e iš serverio. Serveris siunčia price_cents (centus), o mūsų UI nori price eurų. Todėl DTO atskiras nuo domeno MenuItem, o tarp jų — mažas vertėjas.
  • Repozitorija — sluoksnis tarp ViewModel ir API: gauna DTO, paverčia domenu, grąžina „švarius" MenuItem.

Svarbu — sujungsim RANKOMIS. Šioje pamokoje Retrofit instanciją (bazinis URL, JSON keitiklis) susikursim patys, tiesiogiai. Koino kol kas nenaudojam — jis ateis 6 pamokoje. Tai sąmoninga: pirma pajusk, kiek rankinio jungimo reikia, tada pamatysi, ką Koinas išsprendžia.

Statykim: pirma serviso sąsaja + DTO, tada — meniu iš serverio į ekraną.