paint-brush
Go phušola tirišo ya iOS ya Reddit’s - Ditemogo ka ga di-API, Tiragatšo, Tšhireletšo, le Diteko tša A/Bka@hackercm3ebf0le00003b7n7h2a5k7d
Histori e mpsha

Go phušola tirišo ya iOS ya Reddit’s - Ditemogo ka ga di-API, Tiragatšo, Tšhireletšo, le Diteko tša A/B

ka 7m2024/11/26
Read on Terminal Reader

Nako e telele kudu; Go bala

Go rata go tseba ga ka go nkiša go sekaseka ka morago ga ditiragalo go šoma ga tirišo ya Reddit iOS gomme gwa utolla ditemogo tše dingwe tše botse ka di-API tša Reddit.
featured image - Go phušola tirišo ya iOS ya Reddit’s - Ditemogo ka ga di-API, Tiragatšo, Tšhireletšo, le Diteko tša A/B
undefined HackerNoon profile picture
0-item

Ke hweditše phihlelo ya tirišo ya iOS ya Reddit e kaone go feta phetolelo ya wepe, ka gona ke ile ka nagana go hlahloba kamoo e laetšago ya data ka lebelo gakaakaa. Mona ke teardown ya Reddit ya iOS tiriso ye.


Dintlha tše dingwe tše dikgolo ke tše:

  • E šomiša netefatšo ye e theilwego go Token.
  • E šomiša di-API tša GraphQL bakeng sa mo e nyakilego go ba se sengwe le se sengwe go tšwa go peakanyo & diteko go ya go poso info.
  • E hlokomela tshepedišo ya tshepedišo ya yona ya API bjalo ka ge e itemogetšwe ke badiriši ba yona ka go šomiša API yeo e bitšwago w3-reporting.
  • Ka bontši bja dipitšo tša GraphQL API fela leina la tshepedišo le fetišwa ntle le diphetogo, ke tšea gore ba šomiša middleware go abstract peakanyo ya diphetogo go tšwa go front-end. A backend tšebeletso e tlatsa ka info e thehiloeng lebitso la tshebetso.
  • Reddit e šomiša Sokethe ya Wepe bakeng sa tšobotsi ya ditshwayotshwayo tše di phelago.


Mona ke teardown qaqileng ya dipitso API. Ke dirišitše Requestly ya Desktop App go thibela Reddit ya iOS tirišo, ditaelo tša go hloma di filwe mo .

Theknolotši ye e Dirišitšwego

Reddit App e bōpiloe le

  • Tiriso ya iOS ya Reddit e šomiša di-API tša GraphQL go laetša dikagare ka moka.
  • Netefatšo ye e theilwego godimo ga leswao e šomišwa go netefatša badiriši.
  • Tlhokomelo ya Tiragatšo ka go bega tshepedišo ya API mafelelong a mosediriši.
  • Go fa ditshwayotshwayo ka go phela go thekgwa ka go šomiša WebSocket.
  • Peakanyo ya go fetoga go laola boitshwaro bja tirišo ka kgole ntle le go tsenya diphetolelo tše mpsha.
  • Diteko tša go fetoga go laola diteko ka kgole, go sa nyake go tsenywa tirišong mo gofsa go fetoša maemo a teko.

UX e kaone ka Preloading

Potšišo e kgolo yeo ke bego ke e-na le yona e be e le gore tirišo e šoma bjang ka lebelo gakaakaa e ile ya arabja ge go hlahlobja karabo ya FeedPostDetailsByIds API. API ye e bitšwa skrineng sa gae ka di-id tša diposo tšeo di bontšhitšwego gomme e tla le info ye e tletšego yeo e bontšhwago ka morago ga go kgotla poso. Go laetša mo ga diposo tša godimo go thušitše ka go bontšha skrine sa dintlha tša poso ka pela ntle le loader efe goba efe.


  • Preloading poso di bontšhwa ka phepo.
  • Nako ya karabelo ya di-API le yona e ka lebelo kudu.

GraphQL APIs Tšhireletšo

Dipotšišo tša GraphQL di na le datha le sebopego sa karabo ye e nyakegago. Lebitso la tshebetso ka kakaretso ke boikhethelo. Bontši bja di-API tša Reddit di na le maina a tshepedišo fela ka dipotšišong gomme diphetogo di hwetšagala fela ge go na le diphetogo tša skrineng/difiltara go swana le phepo ka dikgetho tša poso tše fišago le tša moragorago.


Se se fa taolo ye nnyane go bahlami ba frontend go dira diphetogo ka go ikemela eupša taolo ye ntši godimo ga tšhomišompe ya di-API go lata datha ye e sa nyakegego ka morago ga API ya yona ka moka yeo e lebanego le mosediriši.

Diteko tše di Laolwago ka Kgole

Go sepetša diteko go didirišwa tša setlogo tša iOS go thata go hloka go tsenywa tirišong gape go kgontšha goba go šitiša diteko, eupša Reddit e hlomile tirišo ka tsela yeo diteko di ka laolwago kgole. Diteko ka moka di imelwa ka gare ga API gotee le dikelo tša tšona le maemo. The tiriso ye ka tsela e iketsang kenya tshebetsong fapaneng ya teko e abetseng.

Taolo ya Dikarolo tše di theilwego go folaga

Ka badiriši ba bantši gakaakaa, diteko le dikarolo go kaone go di laola ka kgole. Reddit e dira mošomo o mogolo wa go laola dikarolo tše ka kgole.

GetAllDynamicConfigs API pitšo bjalo ka ge go bontšhitšwe go Kgopelo


Ka thakgolwa ye nngwe le ye nngwe ya tirišo, e tla bitša API ya peakanyo go laetša diphetogo tša peakanyo tše 400+. Go ya ka diphetogo tše e bontšha diponagalo tše di fapanego le diphetogo tša diponagalo.

Configs API karabelo

Sephiri sa Karmas

API yeo e nago le leina la tshepedišo ya GetTopKarmaSubreddits e hwetša lenaneo la di-subreddit tša godimo tšeo di nago le dintlha tša karma tšeo di hweditšwego go e nngwe le e nngwe. API ye e utolla gore ke ditshwayotshwayo tše kae le karma ya poso yeo re e hweditšego go tšwa mošomong wa rena ka go sub-reddit ye nngwe le ye nngwe. Ga se nke ka hwetša tshedimošo ye ka gare ga UI ya wepe le ya sellathekeng ya Reddit.


Karma bakeng sa Subreddit e nngwe le e nngwe

Bogolo bja Kaonafatšo

Ge ke bala di-API go hwetša gore ke mohuta ofe wa datha yeo e e tlišago, ke hweditše SubredditFeedElements API e laetša phepo ya sub-reddit ye e kgethilwego eupša ka poso ye nngwe le ye nngwe, e na le JSON yeo e tsentšwego ka gare ga sehlaga ya tshedimošo ye e tletšego ya sub-reddit. Tshedimošo ye ga e nyakege gomme e ka tlošwa go fokotša morwalo wa netweke ya API le go kaonafatša tshepedišo ya yona go ya pele.


Ela hloko: SubredditFeedElements API bjale e tšeetšwe legato ke SubredditFeedSdui API gomme taba e lokišitšwe.

Diriša AI bakeng sa Ditemogo

Ke lekile go šomiša ChatGPT go hwetša ditemogo tše dingwe go tšwa go di-API. Kahoo bōpiloe faele le APIs tsohle le curl bona le dikarabelo bona ka eona. Uploaded faele ye go CustomGPT gore ke kgone go bea mohuta ofe goba ofe wa potšišo. E file ditemogo tše dingwe tšeo di bego di bonagala go swana le gore ke mohuta ofe wa tšhomišo yeo API e ka bago le yona le sebopego sa karabelo eupša e ile ya bona dilo ka leihlo la kgopolo kudu, go bonagala kudu ka lebaka la di-API tše ntši goba ga ke setsebi sa go hlohleletša. Tše dingwe tša ditemogo tšeo di filwego ke AI:


  1. GetAllExperimentVariants API — Diteko tše ntši di na le maina a itšego a "phapano", go akaretšwa dikgetho tša go swana le enabled , variant_1 , control_model , le one_feed_ph_bridge_new_users . Karoganyo ye e šišinya gore Reddit e leka dikarolo go dikarolo tše itšego tša mosediriši go bona khuetšo ya tšona. Ka mohlala, teko d2x_avatar_in_comments_loggedin e na le diphetogo tše pedi, loggedin , le loggedout , ka kgonagalo ya go leka tšobotsi yeo e theilwego godimo ga mmušo wa netefatšo ya mosediriši.
  2. GetAllExperimentVariants API — Diteko di akaretša hybrid_video_rollout_android_v2 , active_sales , le gql_google_maps_integration , tšeo di šupago go mehutahuta ya diteko tša tšobotsi tšeo di akaretšago mošomo wa bidio, go bewa ga papatšo, dikaonafatšo tša segokanyimmediamentsi sa sebolokigolo sa mosebediši, le dikopanyo tša mokgatlo wa boraro
  3. GetAccountDetails API — Karabelo ya API e na le mafelo a go fapafapana ao a hlalošago ka botlalo maemo a akhaonto ya mosediriši, go swana le isSubredditCreationAllowed , isNameEditable , isPasswordSet , le maemo a motsamaisi wa mosediriši. Go tlaleletša, e akaretša suspensionExpiresAt le isSuspended , tšeo di laetšago ge e ba akhaonto ga bjale e emišitšwe goba e thibetšwe

Lenaneo la di-API

Go na le lenaneo la di-API tša GraphQL tšeo ke ithutilego tšona go kwešiša kamoo Reddit e šomago ka gona. Go be go na le di-API tše dingwe gape go swana le netefatšo, go bega bj.bj.Ga se ka di akaretša lenaneong le.

Sekerini

API ya GraphQL
(lebitso la tshebetso) .

Tlhalošo

Gae

Hwetša Dipeakanyo ka Moka tša Dynamic

Loads 400 + config ditekanyetos thehiloeng eo litšobotsi tse fapaneng tsa tiriso ye sebetsa. Peakanyo e ka sebopego sa boleng bja senotlelo se se tlwaelegilego gotee le mohuta wa boleng bjo e ka bago JSON, go phaphamala, thapo bj.bj.


GetAllTekoDiphapano

Kgopelo e na le tshedimošo ka ga tirišo le sedirišwa go abela diteko tšeo di reretšwego phetolelo ya sedirišwa le tirišo. Karabo e na le lenaneo la diteko ka moka ka id, experimentName, phetolelo & maemo.


HwetšaAkhaonto

Loads dintlha tsohle tsa kena ka mosebedisi.


HomeFeedSdui ya go fepa

Laetša diposo tše mmalwa tša mathomo ka dintlha tša fasefase go bontšha letlakaleng la gae.


FeedPostDintlhaKaIds

Preloads diposo sebelisa ids le dintlha tsohle, haeba mosebedisi tobetsa ka poso.


Ditšhišinyo tša DiscoverBar

Utolla ya data bareng.


Peeletšo ya UserPremium

Data e amanago le peeletšo ya premium ya mosediriši


GetGo Swanelega ga Modiriši

Gets papatso tšoaneleha ya mosebedisi le dikgetho leha e le efe.


Dipalo tša Betšhe

Tshedimošo mabapi le dipetšhe tšeo di hweditšwego ke mosediriši.




Letlakala la Subreddit

Dikanale tša Subreddit

Laetša dintlha ka moka tša motheo ka ga setšhaba go swana le tlhalošo, diaekhone, dibadi, mehuta ya poso ye e dumeletšwego, le mebala.


SubredditTaxonomyDihlogotaba

Laetša legoro la setšhaba le sengwalwa sa pontšho go swana le ge nka laetša r/software ya setšhaba e tla bontšha #20 go Software & Apps.


KeMema e sa emetše

Bjalo ka ge leina le šišinya hlahloba taletšo yeo e sa emetšego, eupša o sa kgonthišege gabotse gore ke taletšo efe.


Dikanale tša Subreddit

Loads dikanale tša poledišano tša sub-reddit, ke ile ka hlahloba di-subreddit tše dintši eupša ga se ka hwetša le ge e le efe.


Di-Redditors tše di Thibetšwego

Tlisa ya data haeba mosebedisi e thibetsoe.


GetBatsamaisi

Gets lenane la mods.


LaetšaSetaele sa SebopegoLe Diwijete

API ye e tliša info ka ga setaele, melawana le dintlha tša setšhaba.


Laetša Ditšhišinyo tša Setšhaba tše di Amanago

API ye e tliša ditšhaba tše di amanago.


SubredditMuting

E hlahloba ge e ba sub reddit e kgaoditšwe.


Dielemente tša Feed ya Subreddit

Loads phepo ya sub-reddit. E tšea difiltara & dikgetho tša peakanyo tšeo di kgethilwego bakeng sa sub-reddit. E tliša dintlha ka moka mabapi le diposo tšeo di tlago bontšhwa ka go phepo.


PostInfoKaIdDitshwayotshwayo

Kgopelo ye e preloads ditshwayotshwayo tša poso ya mathomo fela.




Letlakala la Poso

GetTlwaeloEmojisMaemo

API ye e ile ya bitšwa ka id ya sub-reddit gomme e laetša maemo a di-emojis tša tlwaelo go sub-reddit. Its not very clear about why API ye e bitšwa, eupša ke e bone ka makga a mantši. Karabo e be e le isEnabled: false maemong ka moka ao e a lekilego.


GetSubredditPhihleleloFlairsMaemo

Go swana le maemo a emoji e tšea id ya sub-reddit gomme e hwetša karabo bjalo ka isEnabled: maaka . Morero wa se ga o hlake go nna.


PostInfoKaIdDitshwayotshwayo

API ye e šomišwa go laetša ditshwayotshwayo tša poso ka go šomiša id ya poso yeo e fetišitšwego ka kgopelong.


DitshwayotshwayoLetlakalaDipapatšo

Loads papatso feela ka holimo ho ditshwaelo.




Letlakala la Profaele

RedditorKa Leina la

Loads dintlha tša profaele ya mosebedisi yo a tsenego.


Dipeakanyo tša PostSet

Palo ya diposo tšeo di swanetšego go laetša.


GetTopKarmaDidirišwa tša ka fasana

Hwetša lenaneo la di-subreddit tša godimo tšeo di nago le dintlha tša karma setšhabeng se sengwe le se sengwe, API ye e utolla mabapi le gore ke ditshwayotshwayo tše kae le karma ya poso yeo re e hweditšego go tšwa mošomong wa rena ka go sub-reddit ye nngwe le ye nngwe.


Phepo ya Profaele ya Modiriši

Phepo ya profaele ya mosebedisi yeo e nago le ditshwayotshwayo le dipolelo.


Difoka tša Setšhaba tša Modiriši

Lenaneo la diphihlelelo le dikgwele tšeo di hweditšwego ke leina la mosediriši tšeo di fetišitšwego ka kgopelo ka id, leina le seswantšho seo se tlago bontšhwa.


Profaele ya TippingE hudušitšwe

Dintlha ka ga profaele ya go šišinya, ga se ya šomiša tšobotsi ye kudu. E bontšhitše 0 balance mo profile yaka 😄.

Mafetšo

Ke rata go dira dintlha tše mmalwa ge ke phetha teko ye ya go phušola.

  • Di-API tša Reddit ga se tša lebelo kudu go e na le moo di diriša go laetša pele go fa boitemogelo bjo bokaone bja mosediriši.
  • Mošomo wa di-API ga o ke o felela, gaešita le moentšeneare wa Reddit o na le mošomo o itšego wo a swanetšego go o dira go o kaonefatša go ya pele.
  • Go boloka dipeakanyo tša tirišo & diteko kgole go ka fa taolo ye botse godimo ga boitemogelo bja mosediriši.
  • Baentšeneare ba Requestly ba dirile mošomo o mogolo wa go bontšha leina la tshepedišo ka Kgopelo ye nngwe le ye nngwe ya GraphQL, ba dira gore bophelo bja devs bo be bonolo kudu.