E gjeta përvojën e aplikacionit iOS të Reddit më të mirë se versioni në internet, kështu që mendova të kontrolloja se si i ngarkon të dhënat kaq shpejt. Këtu është prishja e aplikacionit iOS të Reddit.
Këtu janë disa pika kryesore:
Këtu është përmbysja e detajuar e thirrjeve të API. Kam përdorur aplikacionin Desktop të Requestly për të përgjuar aplikacionin iOS të Reddit, udhëzimet e konfigurimit jepen këtu .
Aplikacioni Reddit është krijuar me
Pyetja kryesore që kisha ishte se si aplikacioni po funksionon kaq shpejt u përgjigj pasi kontrollova përgjigjen e FeedPostDetailsByIds API. Ky API thirret në ekranin bazë me ID-të e postimeve të shfaqura dhe vjen me informacione të detajuara që shfaqen pasi klikoni postimin. Ky ngarkim paraprak i postimeve kryesore ndihmoi në shfaqjen e menjëhershme të ekranit të detajeve të postimit pa ndonjë ngarkues.
Pyetjet e GraphQL përbëhen nga të dhënat dhe struktura e përgjigjes së nevojshme. Emri i operacionit është përgjithësisht opsional. Shumica e API-ve të Reddit kanë vetëm emra operacionesh në pyetje dhe variablat janë të disponueshëm vetëm kur ka variabla/filtra në ekran si furnizimi me opsionet e postimit të nxehtë dhe më të fundit.
Kjo u jep më pak kontroll zhvilluesve të frontit për të bërë ndryshime në mënyrë të pavarur, por më shumë kontroll mbi keqpërdorimin e API-ve për të marrë të dhëna të panevojshme pas gjithë API-së së saj që përballet me përdoruesit.
Ekzekutimi i eksperimenteve në aplikacionet origjinale të iOS është i vështirë dhe ka nevojë për ri-vendosje për të aktivizuar ose çaktivizuar eksperimentet, por Reddit e ka konfiguruar aplikacionin në atë mënyrë që eksperimentet të mund të kontrollohen nga distanca. Të gjitha eksperimentet ngarkohen në një API së bashku me vlerat dhe statuset e tyre. Aplikacioni aktivizon automatikisht variantin e eksperimentit që ka caktuar.
Me kaq shumë përdorues, eksperimente dhe veçori, është më mirë t'i kontrollosh nga distanca. Reddit bën një punë të shkëlqyer për të kontrolluar këto veçori nga distanca.
Në çdo nisje të aplikacionit, ai do të thërrasë një API konfigurimi për të ngarkuar mbi 400 variabla të konfigurimit. Bazuar në këto variabla ai tregon veçori dhe variante të ndryshme të veçorive.
API me emrin e operacionit GetTopKarmaSubreddits
merr listën e nënrediteve kryesore me pikë karma të fituara në secilën prej tyre. Kjo API zbulon sa komente dhe karma postimesh kemi fituar nga aktiviteti ynë në çdo nën-reddit. Nuk mund ta gjeja kurrë këtë informacion brenda ndërfaqes së internetit dhe celularit të Reddit.
Ndërsa lexoja API-të për të gjetur llojin e të dhënave që sjell, zbulova se SubredditFeedElements
API ngarkon furnizimin e nën-reddit-it të zgjedhur, por me çdo postim, ai ka një JSON të mbivendosur me informacion të detajuar nën-reddit. Ky informacion është i tepërt dhe mund të hiqet për të zvogëluar ngarkesën e rrjetit të API-së dhe për të përmirësuar më tej performancën e tij.
Shënim: SubredditFeedElements
API tani është zëvendësuar nga SubredditFeedSdui
API dhe problemi është rregulluar.
Unë u përpoqa të përdor ChatGPT për të marrë disa njohuri nga API-të. Kështu krijoi një skedar me të gjitha API-të me kaçurrelat e tyre dhe përgjigjet e tyre në të. E ngarkova këtë skedar në një CustomGPT në mënyrë që të mund të vendos çdo lloj pyetjeje. Ai dha disa njohuri që ishin të dukshme, si lloji i përdorimit të një API dhe strukturën e përgjigjes, por kishte shumë halucinacione, ka shumë të ngjarë për shkak të shumë API-ve ose unë nuk jam ekspert në nxitje. Disa nga njohuritë e dhëna nga AI:
GetAllExperimentVariants
API — Shumë eksperimente kanë emra të veçantë "variante", duke përfshirë opsione si enabled
, variant_1
, control_model
, dhe one_feed_ph_bridge_new_users
. Ky segmentim sugjeron që Reddit po teston veçori në segmente të veçanta të përdoruesve për të përcaktuar ndikimin e tyre. Për shembull, eksperimenti d2x_avatar_in_comments_loggedin
ka dy variante, loggedin
dhe loggedout
, duke testuar potencialisht funksionin bazuar në gjendjen e vërtetimit të përdoruesit.GetAllExperimentVariants
API — Eksperimentet përfshijnë hybrid_video_rollout_android_v2
, active_sales
, dhe gql_google_maps_integration
, të cilat tregojnë për një gamë të gjerë testesh të veçorive që mbulojnë funksionalitetin e videos, vendosjet e reklamave, përmirësimet e ndërfaqes së përdoruesit dhe integrimet e palëve të tretaGetAccountDetails
API — Përgjigja API përmban fusha të ndryshme që detajojnë statusin e llogarisë së përdoruesit, të tilla si isSubredditCreationAllowed
, isNameEditable
, isPasswordSet
dhe statusin e moderatorit të përdoruesit. Për më tepër, ai përfshin suspensionExpiresAt
dhe isSuspended
, të cilat tregojnë nëse një llogari është aktualisht e pezulluar ose e kufizuarEkziston një listë e API-ve GraphQL që kam studiuar për të kuptuar se si funksionon Reddit. Kishte edhe disa API të tjera si vërtetimi, raportimi etj. Unë nuk i përfshiva në këtë listë.
Ekrani | GraphQL API | Përshkrimi |
---|---|---|
Shtëpi | GetAllDynamicConfigs | Ngarkon mbi 400 parametra konfigurimi në bazë të të cilave funksionojnë veçori të ndryshme të aplikacionit. Konfigurimi është në formatin tipik të vlerës së çelësit së bashku me llojin e vlerës që mund të jetë një JSON, float, varg etj. |
| GetAllExperimentVariantet | Kërkesa përmban informacione rreth aplikacionit dhe pajisjes për të caktuar eksperimente të destinuara për pajisjen dhe versionin e aplikacionit. Përgjigja përmban një listë të të gjitha eksperimenteve me ID, Emri i eksperimentit, versioni dhe statusi. |
| GetAccount | Ngarkon të gjitha detajet e përdoruesit të regjistruar. |
| HomeFeedSdui | Ngarkon postimet e para me detaje minimale për t'u shfaqur në faqen kryesore. |
| FeedPostDetailsByIds | Parangarkon postimet duke përdorur ID me të gjitha detajet, në rast se një përdorues klikon në postim. |
| DiscoverBarRecommendations | Zbuloni të dhënat e shiritit. |
| Abonimi UserPremium | Të dhëna në lidhje me abonimin premium të përdoruesit |
| GetUserAdEligibility | Merr përshtatshmërinë për reklamën e përdoruesit dhe çdo preferencë. |
| Numri i distinktivit | Informacion në lidhje me distinktivët e fituar nga përdoruesi. |
| | |
Faqja e Subreddit | SubredditChannels | Ngarkon të gjitha detajet bazë rreth komunitetit si përshkrimi, ikonat, numëruesit, llojet e lejuara të postimeve dhe ngjyrat. |
| SubredditTaksonomyTema | Ngarkon kategorinë e komunitetit dhe një tekst të shfaqur si p.sh. nëse ngarkoj r/softuerin e komunitetit, ai do të tregojë #20 te Software & Apps. |
| IsInvitePending | Siç sugjeron emri, kontrolloni për një ftesë në pritje, por nuk jeni të sigurt se cila ftesë është saktësisht. |
| SubredditChannels | Ngarkon kanalet e bisedës së nën-reddit, kontrollova shumë subreddit por nuk gjeta asnjë. |
| BlockedRedditors | Sjell të dhëna nëse përdoruesi është i bllokuar. |
| GetModerators | Merr listën e modaliteteve. |
| FetchStructuredStyleAndWidgets | Kjo API sjell informacione rreth stilit, rregullave dhe detajeve të komunitetit. |
| Rekomandimet e FetchRelatedCommunity | Ky API sjell komunitete të lidhura. |
| SubredditMuting | Kontrollon nëse sub reddit është i heshtur. |
| SubredditFeedElements | Ngarkon furnizimin e nën-reddit. Ai merr filtrat dhe opsionet e paraqitjes të zgjedhura për nën-reddit. Sjell të gjitha detajet rreth postimeve që do të shfaqen në furnizim. |
| PostInfoByIdComments | Kjo kërkesë ngarkon paraprakisht komentet e postimit të parë. |
| | |
Faqja e postimit | GetCustomEmojis Status | Ky API u thirr me ID-në e nën-reddit dhe ngarkon statusin e emoji-ve të personalizuara në nën-reddit. Nuk është shumë e qartë pse quhet kjo API, por unë e kam parë atë në shumë raste. Përgjigja ishte |
| GetSubredditAchievementFlairsStatus | Ngjashëm me statusin e emoji-t, ai merr id nën-reddit dhe merr një përgjigje si është Enabled: false . Qëllimi i kësaj nuk është i qartë për mua. |
| PostInfoByIdComments | Ky API përdoret për të ngarkuar komentet e postimit duke përdorur ID-në e postimit të kaluar në kërkesë. |
| Reklamat e faqeve të komenteve | Ngarkon reklamën vetëm sipër komenteve. |
| | |
Faqja e profilit | RedditorByName | Ngarkon detajet e profilit të përdoruesit të identifikuar. |
| PostSetSettings | Numri i postimeve për t'u ngarkuar. |
| GetTopKarmaSubreddits | Merrni listën e subreddit-eve kryesore me pikë karma në secilin komunitet, kjo API zbulon se sa komente dhe postime karma kemi fituar nga aktiviteti ynë në çdo nën-reddit. |
| UserProfileFeed | Furnizimi për profilin e përdoruesit që përmban komente dhe postime. |
| UserPublicTrophies | Lista e arritjeve dhe trofeve të fituara nga emri i përdoruesit të kaluar në kërkesë me ID, emrin dhe imazhin që do të shfaqet. |
| TippingProfileMigrated | Detajet rreth profilit të bakshishit, nuk e kanë përdorur shumë këtë veçori. Tregoi bilanc 0 në profilin tim 😄. |
Do të doja të theksoja disa pika në përfundim të këtij eksperimenti të shkatërrimit.