𝗨𝗖𝗛𝗔𝗠𝗕𝗨𝗔𝗡𝗜 𝗪𝗔 𝗞𝗜𝗡𝗔 𝗪𝗔 𝗥𝗘𝗤𝗨𝗘𝗦𝗧 𝗡𝗔 𝗥𝗘𝗦𝗣𝗢𝗡𝗦𝗘
Kila seva ya HTTP hufuata mzunguko maalum. Inakubali muunganisho, inachambua ombi (request), inatafuta njia (route) inayolingana, na kutuma jibu (response).
Hyperlane inafanya mchakato huu kuwa rahisi. Unaweza kudhibiti mzunguko huu kwa kutumia wito wa njia (method calls) wa moja kwa moja au attribute macros rahisi.
Jinsi Hyperlane Inavyoshughulikia Mzunguko wa Maisha ya Request:
- Seva inakubali muunganisho wa TCP.
- Inachambua mtiririko (stream) kuwa kitu cha Request (Request object).
- Middleware ya Request inachakata data.
- Seva inalinganisha ombi na njia (route).
- Kichakataji cha njia (route handler) kinatekeleza.
- Middleware ya Response inafanya kazi.
- Jibu linarudi kwa mteja (client).
Kupata Data ya Request: Unaweza kutumia kitu cha Context ili kuchukua data kutoka kwenye ombi. • get_method() kwa ajili ya njia ya HTTP. • get_path() kwa ajili ya njia ya URL. • get_headers() kwa ajili ya vichwa (headers) vyote. • get_body_json() ili kuchambua miili ya JSON. • try_get_query() ili kupata vigezo maalum.
Hyperlane pia hutumia attribute macros ili kurahisisha uchoraji wa data (data extraction). Badala ya kuandika kodi ya kienyeji, unaweza kutumia lebo kama:
- #[request_body_json] ili kuchambua JSON papo hapo.
- #[request_query] ili kuchukua vigezo vya URL.
- #[request_header] ili kuchukua vichwa (headers) maalum.
Usimamizi wa Njia (Route) na Uchujaji: Unaweza kufafanua njia za kidinamiki ukitumia sintaksi ya {param}. Kwa mfano: "/test/{text}". Hyperlane pia inakuwezesha kuchuja maombi katika kiwango cha njia. Unaweza:
- Kulinganisha wenyeji (hosts) maalum kwa kutumia #[host].
- Kukataa marejeleo (referers) maalum kwa kutumia #[reject_referer].
- Kutumia mantiki maalum kwa kutumia #[filter].
Kusimamia Majibu (Responses) na Kuki (Cookies): Unadhibiti jibu kupitia kitu cha Context. Unaweza kuweka nambari za hali (status codes), vichwa (headers), na miili (bodies) kwa mkono. Ili kurahisisha hili, tumia response macros:
- #[response_status_code(200)]
- #[response_body("Hello World")]
Kwa ajili ya usimamizi wa kikao (session management), tumia CookieBuilder. Inakuwezesha kuweka tarehe za mwisho, vikoa (domains), na alama za usalama kama HttpOnly au Secure kwa sintaksi safi.
Mara tu jibu lako linapokuwa tayari, unalituma kupitia mtiririko (stream) ukitumia njia kama build() na try_send().
Hyperlane inakupa njia mbili za kufanya kazi. Tumia wito wa njia (method calls) unapohitaji udhibiti wa wazi. Tumia attribute macros unapotaka kodi safi na ya haraka.
Kodi ya Mradi: https://github.com/hyperlane-dev/hyperlane
Chanzo: https://dev.to/tengxgfyrz67s/request-and-response-deep-dive-1j1b