Ukuhlanganiswa kweGraphQL kwi-Android kunye nomthengi we-Apollo

  • Ukuveliswa ngokuzenzekelayo kweemodeli zedatha ezichwetheziweyo ngokusekelwe kwiskimu seseva ukuze kuthintelwe ukuhlalutya iimpazamo.
  • Ukusetyenziswa kwenkqubo yokugcina idatha enamanqanaba amathathu esemgangathweni evumela ukuba usetyenziso lusebenze ngaphandle kweintanethi.
  • Inkxaso yendalo yeKotlin Multiplatform kunye nokubeka esweni iimpazamo ngokulula kusetyenziswa ii-interceptors eziphambili.

Ukuhlanganiswa kweGraphQL kwi-Android kunye nomthengi we-Apollo

Ukuba ufumanisa ukuba ukuphatha i-JSON ngesandla kwi-Android kubuhlungu kakhulu, mhlawumbi lixesha lokujonga iGraphQL. Ngokungafaniyo ne Ii-REST API zemveliapho ngamanye amaxesha ufumana idatha eninzi ongayidingiyo okanye uphoswa zizinto kwaye kufuneka wenze izicelo ezintathu ezahlukeneyo, UApollo Kotlin Ifika ukuze ilungiselele olu ngxubakaxaka, ikuvumele ukuba u-odole kanye into oyifunayo kwaye unga-odoli i-byte engaphezulu.

Okwenza esi sixhobo sibe namandla kangaka kukuba asipheleli nje ekwenzeni isicelo, kodwa ivelisa iimodeli zedatha ezichwetheziweyo ngokusekelwe kwiskimu seseva yakho. Libala ngokulahla amaxabiso ngesandla okanye ubunzima ngeeMaphu ezingapheliyo; apha yonke into iqinisekisiwe ngokuchasene neskimu, ngoko ke ukuba uzama ukufikelela kwintsimi ongayicelanga kumbuzo wakho, umqokeleli uza kukulumkisa ngaphambi kokuba asebenzise i-app, akusindise kwezo ngozi zingalindelekanga ezicaphukisayo.

Uqwalaselo lokuqala kunye nokuxhomekeka

Ukuqala ukuhlanganisa oku kwiprojekthi yanamhlanje, into efanelekileyo onokuyenza kukusebenzisa ifayile build.gradle.ktsOkokuqala, kufuneka wongeze i-plugin ye-Apollo kwicandelo lee-plugins uze emva koko ufake ukuxhomekeka kwexesha lokusebenza. Ukuba usebenza ne I-Kotlin Multiplatform (KMP)I-Apollo ngumhlobo omangalisayo kuba ixhasa ukuveliswa kwekhowudi kumaqonga amaninzi, kuquka i-iOS, i-macOS, kunye ne-watchOS.

Kubalulekile ukuchaza igama lephakheji apho iimodeli ezivelisiweyo ziya kugcinwa khona ukugcina iprojekthi icocekile. Ngokuxhomekeke kwinguqulelo oyisebenzisayo, ukusuka kwi-4.x ukuya kwi-5.0.0 yamva nje, ungafumana umahluko omncinci, kodwa ingqiqo iyafana: i-plugin ifunda iifayile zakho zenkcazo kwaye yenza iiklasi ezithile zeKotlin kuyo yonke imisebenzi oyichazayo.

Ulawulo lweSchema kunye nemibuzo

I-Apollo kufuneka yazi ukuba iseva yakho ijongeka njani, kwaye ngenxa yoko ifuna ifayile yeschema. Oku kungaba yifayile ye-schema. ifayile ye-.graphqls okanye ifayile ye-.jsonEyona ndlela ilula yokufezekisa oku kukuzihlolisisa, ukhuphele i-schema ngqo kwiseva usebenzisa i-terminal okanye izixhobo ezifana neGraphiQL okanye i-Apollo Studio.

Nje ukuba ube nomzobo kwifolda src/main/graphqlUngaqala ukubhala iifayile zakho .graphqlKulapho uchaza khona Imibuzo, iinguqu kunye nobhalisoXa kuqulunqwa iprojekthi, iApollo iza kuvelisa iklasi ngokuzenzekelayo (umzekelo, HeroQuery.kt) onokuzilungiselela ukuze wenze umnxeba kwiseva.

Ukuphunyezwa kweApolloClient

Ukuhlanganiswa kweGraphQL kwi-Android kunye nomthengi we-Apollo

Eyona nto iphambili kuyo yonke le nto yiklasi Umthengi weApolloInoxanduva lokulawula unxibelelwano nesiphelo seseva yakho yeGraphQL. Ukuze isebenze ngokuchanekileyo kwi-Android, ungalibali ukongeza imvume ye-Intanethi kwi I-AndroidManifest.xmlUkuba uvavanya izinto kwi-emulator kwaye iseva yakho ikwi-localhost, kuya kufuneka ulungiselele ifayile yokhuseleko lwenethiwekhi ukuze uvumele ithrafikhi yombhalo ecacileyo kwidilesi ye-IP. 10.0.2.2.

Ukuze wenze isicelo, usebenzisa nje umthengi uze udlulisele umbuzo owenziweyo. Isiphumo siya kuba yinto echwetheziweyo equlethe impendulo. Ukuba ufuna into ephucukileyo ngakumbi, efana iintlobo zesikali ezenziwe ngokwezifiso (umzekelo, ukuphatha imihla), ungachaza imephu kwi-build.gradle kwaye ubhalise i-adaptha ethile ukuze uApollo azi indlela yokuguqula loo datha.

Amaqhinga e-Cache kunye nokusebenza

Enye yezinto ezixabisekileyo zika-Apollo yinkqubo yakhe yokugcina izinto. Ayipheleli nje kuphela kumphezulu; inamanqanaba amathathu ahlukeneyo. I-HTTP Response Cache Igcina iimpendulo ezingavuthwanga, ngelixa I-Cache yeDiski eqhelekileyo Igcina idatha kwi-SQL, ivumela usetyenziso ukuba lusebenze nokuba alusebenzi ngaphandle kwe-intanethi. Okokugqibela, I-Cache ye-InMemory eqhelekileyo Ilungele ukufikelela kwidatha ekhawulezayo kakhulu ngelixa inkqubo yesicelo isasebenza.

Ngaphezu koko, ukuba uvela kwisikolo sakudala okanye kwiiprojekthi ezifuna ukusabela, uApollo uxhaswa kakhulu I-RxJava 1 kunye ne-2Ungazisonga iifowuni ze-Apollo kwi-Observables okanye kwi-Singles, okwenza kube lula ukuzidibanisa nokuhamba kwedatha okungahambelaniyo, okoko nje ukhumbula ukulawula ngokufanelekileyo ii-Disposables ukuze uphephe ukuvuza kwememori.

Ukubeka esweni kunye nokulungisa iimpazamo ngeSentry

Xa usetyenziso luqalisa ukuveliswa, kufuneka wazi ukuba yintoni engalunganga. Ukuhlanganiswa kunye Ukuthunyelwa Ikuvumela ukuba wongeze ii-interceptors kwi-ApolloClient ukuze ulandelele isicelo ngasinye se-HTTP. Oku kudala umkhondo oneenkcukacha zemisebenzi, oza kuthatha ngokuzenzekelayo Iimpazamo zabathengi beGraphQL, njengeekhowudi zempendulo ezingaphumelelanga okanye imisebenzi emibi, ukuzibeka ngokwamaqela ngegama lomsebenzi.

Ukuze uphephe ukuthumela idatha eyimfihlo, kuyacetyiswa ukuba kusetyenziswe izinto eziguquguqukayo kwimibuzo endaweni yemitya edityanisiweyo, njengoko iSentry inokusebenzisa i Ukucoca i-PII (ulwazi oluchonga umntu) ngokuzenzekelayo. Ungenza ngokwezifiso ukuba zeziphi iziganeko ezifotweyo usebenzisa BeforeSendCallbackikunika ulawulo olupheleleyo kwi-telemetry yomaleko wedatha yakho.

Ukusebenzisa le klayenti kuguqula uyilo lwenethiwekhi ye-Android ngokuphelisa ukungasebenzi kakuhle kwedatha nokuqinisekisa ukuba unxibelelwano phakathi kwe-frontend kunye ne-backend ikhuselekile, isebenza kakuhle kwaye kulula kakhulu ukuyigcina ngenxa yokuveliswa kwekhowudi ngokuzenzekelayo.


Yongeza njengomthombo okhethwayo