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.
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.
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.
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:
-
GetAllExperimentVariants
API — Diteko tše ntši di na le maina a itšego a "phapano", go akaretšwa dikgetho tša go swana leenabled
,variant_1
,control_model
, leone_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, tekod2x_avatar_in_comments_loggedin
e na le diphetogo tše pedi,loggedin
, leloggedout
, ka kgonagalo ya go leka tšobotsi yeo e theilwego godimo ga mmušo wa netefatšo ya mosediriši. -
GetAllExperimentVariants
API — Diteko di akaretšahybrid_video_rollout_android_v2
,active_sales
, legql_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 -
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 leisSubredditCreationAllowed
,isNameEditable
,isPasswordSet
, le maemo a motsamaisi wa mosediriši. Go tlaleletša, e akaretšasuspensionExpiresAt
leisSuspended
, 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 | 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 |
| 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.