Integracija GraphQL-a u Androidu s Apollo klijentom

  • Automatsko generiranje tipiziranih modela podataka na temelju sheme poslužitelja kako bi se izbjegle pogreške pri parsiranju.
  • Implementacija standardiziranog trorazinskog sustava predmemoriranja koji omogućuje aplikaciji funkcioniranje izvan mreže.
  • Izvorna podrška za Kotlin Multiplatform i jednostavno praćenje grešaka pomoću naprednih presretača.

Integracija GraphQL-a u Androidu s Apollo klijentom

Ako vam ručno rukovanje JSON-om u Androidu predstavlja pravu glavobolju, vjerojatno je vrijeme da pogledate GraphQL. Za razliku od... Tradicionalni REST API-jigdje ponekad primate puno podataka koji vam ne trebaju ili vam nešto nedostaje i morate podnijeti tri različita zahtjeva, Apollo Kotlin Dolazi kako bi uveo red u ovaj kaos, omogućujući vam da naručite točno ono što želite i ni malo više.

Ono što ovaj alat čini tako moćnim jest to što ne samo da šalje zahtjev, već generira tipizirane modele podataka na temelju sheme vašeg poslužitelja. Zaboravite na ručno pretvaranje vrijednosti ili mučenje s beskrajnim mapama; ovdje je sve validirano u odnosu na shemu, pa ako pokušate pristupiti polju koje niste zatražili u upitu, kompajler će vas upozoriti prije pokretanja aplikacije, štedeći vas od onih dosadnih neočekivanih rušenja.

Početna konfiguracija i ovisnosti

Za početak sastavljanja ovoga u modernom projektu, idealno je koristiti datoteku izgradnja.gradle.ktsPrvo morate dodati Apollo dodatak u odjeljak dodataka, a zatim uključiti ovisnost o vremenu izvođenja. Ako radite s Kotlin višeplatformski (KMP)Apollo je nevjerojatan saveznik jer podržava generiranje koda za više platformi, uključujući iOS, macOS i watchOS.

Bitno je definirati naziv paketa u koji će se generirani modeli spremati kako bi projekt bio uredan. Ovisno o verziji koju koristite, od 4.x do novije 5.0.0, možete pronaći male varijacije, ali logika je ista: dodatak čita vaše datoteke definicija i kreirati specifične Kotlin klase za svaku operaciju koju definirate.

Upravljanje shemama i upiti

Apollo treba znati kako vaš poslužitelj izgleda, a za to mu je potrebna datoteka sheme. To može biti .graphqls datoteku ili .json datotekuNajjednostavniji način za postizanje ovoga je introspekcijom, preuzimanjem sheme izravno s poslužitelja pomoću terminala ili alata poput GraphiQL-a ili Apollo Studija.

Nakon što imate dijagram u mapi src/main/graphqlMožete početi pisati svoje datoteke .graphqlOvdje definirate svoje Upiti, mutacije i pretplatePrilikom kompajliranja projekta, Apollo će automatski generirati klasu (na primjer, HeroQuery.kt) koji možete instancirati za upućivanje poziva poslužitelju.

Implementacija ApolloClienta

Integracija GraphQL-a u Androidu s Apollo klijentom

Srž svega je klasa ApolloClientOdgovoran je za upravljanje komunikacijom s krajnjom točkom vašeg GraphQL poslužitelja. Da bi ispravno radio na Androidu, ne zaboravite dodati dozvolu za internet u AndroidManifest.xmlAko testirate stvari u emulatoru i vaš poslužitelj je na localhostu, morat ćete konfigurirati datoteku mrežne sigurnosti kako biste omogućili promet čistog teksta na IP adresu. 10.0.2.2.

Za izvršavanje zahtjeva jednostavno koristite klijenta i prosljeđujete mu generirani upit. Rezultat će biti tipizirani objekt koji sadrži odgovor. Ako vam je potrebno nešto naprednije, kao što je prilagođeni skalarni tipovi (na primjer, za rukovanje datumima), možete definirati mapiranje u build.gradle i registrirati određeni adapter kako bi Apollo znao kako pretvoriti te podatke.

Strategije predmemorije i performansi

Jedan od Apollonovih dragulja je njegov sustav za pohranu. Ne zaustavlja se samo na površini; nudi tri različite razine. HTTP predmemorija odgovora Pohranjuje sirove odgovore, dok Normalizirana predmemorija diska Pohranjuje podatke u SQL-u, omogućujući aplikaciji da funkcionira čak i izvan mreže. Konačno, Normalizirana predmemorija u memoriji Idealan je za pristup ultrabrzim podacima dok je proces aplikacije još uvijek u tijeku.

Nadalje, ako dolazite iz stare škole ili s projekata koji zahtijevaju odzivnost, Apollo ima solidnu podršku za RxJava 1 i 2Apollo pozive možete omotati u Observables ili Singles, što olakšava integraciju s asinhronim tokovima podataka, sve dok se sjetite pravilno upravljati Disposables kako biste izbjegli curenje memorije.

Praćenje i otklanjanje pogrešaka pomoću Sentryja

Kada aplikacija krene u produkciju, morate znati što nije u redu. Integracija s Dežurni Omogućuje vam dodavanje presretača u ApolloClient za praćenje svakog HTTP zahtjeva. To stvara detaljan trag operacija, automatski bilježeći Greške klijenta GraphQL-a, kao što su neuspješni kodovi odgovora ili loše operacije, grupirajući ih prema nazivu operacije.

Kako bi se izbjeglo slanje osjetljivih podataka, preporučuje se korištenje varijabli u upitima umjesto spojenih nizova znakova, jer Sentry može primijeniti Filtriranje podataka koji otkrivaju identitet (PII) (osobni podaci) automatski. Također možete prilagoditi koji se događaji bilježe pomoću BeforeSendCallbackšto vam daje potpunu kontrolu nad telemetrijom vašeg podatkovnog sloja.

Korištenje ovog klijenta transformira arhitekturu Android mreže uklanjanjem redundancije podataka i osiguravanjem da komunikacija između frontenda i backenda biti siguran, učinkovit i izuzetno jednostavan za održavanje zahvaljujući automatskom generiranju koda.


Dodaj kao preferirani izvor