GraphQL-integration i Android med Apollo-klienten

  • Automatisk generering av typade datamodeller baserade på serverschemat för att undvika parsningsfel.
  • Implementering av ett standardiserat cachningssystem i tre nivåer som gör att applikationen kan fungera offline.
  • Inbyggt stöd för Kotlin Multiplatform och enkel felövervakning med avancerade interceptorer.

GraphQL-integration i Android med Apollo-klienten

Om du tycker att det är riktigt jobbigt att hantera JSON manuellt i Android är det nog dags att ta en titt på GraphQL. Till skillnad från traditionella REST API: er , där du ibland får massor av data som du inte behöver eller saknar information och måste göra tre separata förfrågningar, kommer Apollo Kotlin för att skapa ordning i detta kaos, så att du kan begära exakt vad du vill och inte en enda byte mer.

Det som gör det här verktyget så kraftfullt är att det inte bara gör en förfrågan; det genererar typade datamodeller baserade på din servers schema. Glöm att manuellt casta värden eller kämpa med oändliga Maps; allt valideras mot schemat, så om du försöker komma åt ett fält som du inte begärde i din fråga, kommer kompilatorn att varna dig innan appen ens körs, vilket sparar dig från de där irriterande oväntade krascherna.

Ursprunglig konfiguration och beroenden

För att börja implementera detta i ett modernt projekt är det ideala tillvägagångssättet att använda filen build.gradle.kts . Först måste du lägga till Apollo-pluginet i plugin-avsnittet och sedan inkludera runtime-beroendet. Om du arbetar med Kotlin Multiplatform (KMP) är Apollo ett ovärderligt verktyg eftersom det stöder kodgenerering för flera plattformar, inklusive iOS, macOS och watchOS.

Det är viktigt att definiera paketnamnet där de genererade modellerna ska sparas för att hålla projektet rent. Beroende på vilken version du använder, från 4.x till den nyare 5.0.0, kan du hitta små variationer, men logiken är densamma: plugin-programmet läser dina definitionsfiler och skapar specifika Kotlin-klasser för varje operation du definierar.

Schemahantering och frågor

Apollo behöver veta hur din server ser ut, och för det krävs en schemafil. Detta kan vara en .graphqls- eller .json-fil . Det enklaste sättet att få tag på den är genom självrannsakan, genom att ladda ner schemat direkt från servern med hjälp av terminalen eller verktyg som GraphiQL eller Apollo Studio.

När du har diagrammet i mappen src/main/graphqlDu kan börja skriva dina filer .graphqlDet är här du definierar din Frågor, mutationer och prenumerationerNär projektet kompileras genererar Apollo automatiskt en klass (till exempel HeroQuery.kt) som du kan instansiera för att göra anropet till servern.

ApolloClient-implementering

GraphQL-integration i Android med Apollo-klienten

Kärnan i allt är klassen ApolloClientDen ansvarar för att hantera kommunikationen med din GraphQL-serverslutpunkt. För att den ska fungera korrekt på Android, glöm inte att lägga till internetbehörigheten till AndroidManifest.xmlOm du testar saker i en emulator och din server är på localhost, måste du konfigurera en nätverkssäkerhetsfil för att tillåta klartexttrafik till IP-adressen. 10.0.2.2.

För att köra en begäran använder du helt enkelt klienten och skickar den genererade frågan. Resultatet blir ett typat objekt som innehåller svaret. Om du behöver något mer avancerat, till exempel anpassade skalära typer (till exempel för att hantera datum), kan du definiera en mappning i din build.gradle-fil och registrera en specifik adapter så att Apollo vet hur man konverterar den informationen.

Cache- och prestandastrategier

En av Apollos kronjuveler är dess lagringssystem. Det skrapar inte bara på ytan; det erbjuder tre distinkta nivåer. HTTP Response Cache lagrar råa svar, medan Normalized Disk Cache sparar data i SQL, vilket gör att appen kan fungera även offline. Slutligen är Normalized InMemory Cache idealisk för att komma åt ultrasnabb data medan appprocessen fortfarande körs.

Dessutom, om du kommer från den gamla skolan eller från projekt som kräver reaktivitet, har Apollo ett gediget stöd för RxJava 1 och 2. Du kan linda Apollo-anrop i Observables eller Singles, vilket gör det enkelt att integrera med asynkrona dataflöden, så länge du kommer ihåg att hantera Disposables korrekt för att undvika minnesläckor.

Övervakning och felsökning med Sentry

När din app går i produktion behöver du veta vad som går fel. Genom att integrera med Sentry kan du lägga till interceptorer i ApolloClient för att spåra varje HTTP-förfrågan. Detta skapar en detaljerad spårning av operationer, som automatiskt fångar upp GraphQL-klientfel , till exempel misslyckade svarskoder eller felaktiga operationer, och grupperar dem efter operationsnamn.

För att undvika att skicka känsliga data rekommenderas det att använda variabler i frågor istället för sammanfogade strängar, eftersom Sentry kan tillämpa en PII-filtrering (personligt identifierbar information) automatiskt. Du kan också anpassa vilka händelser som registreras med hjälp av en BeforeSendCallbackvilket ger dig fullständig kontroll över telemetrin i ditt datalager.

Genom att använda den här klienten transformeras Androids nätverksarkitektur genom att eliminera dataredundans och säkerställa att kommunikationen mellan frontend och backend är säker, effektiv och extremt enkel att underhålla tack vare automatisk kodgenerering.


Lägg till som prioriterad källa i Google