𝗥𝗲𝗤𝗨𝗘𝗦𝗧 𝗔𝗡𝗗 𝗥𝗘𝗦𝗣𝗢𝗡𝗦𝗘 𝗗𝗘𝗘𝗣 𝗗𝗜𝗩𝗘

प्रत्येक HTTP सर्व्हर एका विशिष्ट चक्राचे (cycle) पालन करतो. तो कनेक्शन स्वीकारतो, रिक्वेस्ट पार्स करतो, रूट मॅच करतो आणि रिस्पॉन्स पाठवतो.

Hyperlane ही प्रक्रिया सोपी करते. तुम्ही थेट मेथड कॉल्स (method calls) किंवा साध्या ॲट्रिब्यूट मॅक्रोजचा (attribute macros) वापर करून हे चक्र व्यवस्थापित करू शकता.

Hyperlane रिक्वेस्ट लाइफसायकल (Request Lifecycle) कशी हाताळते:

  • सर्व्हर TCP कनेक्शन स्वीकारतो.
  • तो स्ट्रीमला Request ऑब्जेक्टमध्ये पार्स करतो.
  • Request middleware डेटावर प्रक्रिया करते.
  • सर्व्हर रिक्वेस्टला एका रूटशी मॅच करतो.
  • रूट हँडलर (route handler) कार्यान्वित होतो.
  • Response middleware चालते.
  • रिस्पॉन्स क्लायंटकडे परत जातो.

रिक्वेस्ट डेटा मिळवणे (Accessing Request Data): तुम्ही रिक्वेस्टमधून डेटा मिळवण्यासाठी Context ऑब्जेक्ट वापरू शकता. • HTTP मेथडसाठी get_method(). • URL पाथसाठी get_path(). • सर्व हेडर्ससाठी get_headers(). • JSON बॉडीज पार्स करण्यासाठी get_body_json(). • विशिष्ट पॅरामीटर्स शोधण्यासाठी try_get_query().

डेटा एक्सट्रॅक्शन (data extraction) स्वयंचलित करण्यासाठी Hyperlane ॲट्रिब्यूट मॅक्रोजचा देखील वापर करते. मॅन्युअल कोड लिहिण्याऐवजी, तुम्ही खालीलप्रमाणे टॅग्स वापरू शकता:

  • JSON त्वरित पार्स करण्यासाठी #[request_body_json].
  • URL पॅरामीटर्स मिळवण्यासाठी #[request_query].
  • विशिष्ट हेडर्स मिळवण्यासाठी #[request_header].

रूट मॅनेजमेंट आणि फिल्टरिंग (Route Management and Filtering): तुम्ही {param} सिंटॅक्स वापरून डायनॅमिक रूट्स (dynamic routes) परिभाषित करू शकता. उदाहरणार्थ: "/test/{text}". Hyperlane तुम्हाला रूट लेव्हलवर रिक्वेस्ट फिल्टर करण्याची सुविधा देखील देते. तुम्ही:

  • #[host] वापरून विशिष्ट होस्ट मॅच करू शकता.
  • #[reject_referer] वापरून विशिष्ट रिफरर्स (referers) नाकारू शकता.
  • #[filter] वापरून कस्टम लॉजिक लागू करू शकता.

रिस्पॉन्स आणि कुकीजचे व्यवस्थापन (Managing Responses and Cookies): तुम्ही Context ऑब्जेक्टद्वारे रिस्पॉन्स नियंत्रित करू शकता. तुम्ही स्टेटस कोड, हेडर्स आणि बॉडीज मॅन्युअली सेट करू शकता. हे सोपे करण्यासाठी, रिस्पॉन्स मॅक्रोज वापरा:

  • #[response_status_code(200)]
  • #[response_body("Hello World")]

सेशन मॅनेजमेंटसाठी (session management), CookieBuilder वापरा. हे तुम्हाला स्वच्छ सिंटॅक्ससह एक्सपायरी डेट, डोमेन्स आणि HttpOnly किंवा Secure सारखे सिक्युरिटी फ्लॅग्स सेट करण्याची परवानगी देते.

एकदा तुमचा रिस्पॉन्स तयार झाला की, तुम्ही build() आणि try_send() सारख्या मेथड्स वापरून तो स्ट्रीमद्वारे पाठवू शकता.

Hyperlane तुम्हाला काम करण्याचे दोन मार्ग देते. जेव्हा तुम्हाला स्पष्ट नियंत्रण (explicit control) हवे असेल तेव्हा मेथड कॉल्स वापरा. जेव्हा तुम्हाला स्वच्छ आणि वेगवान कोड हवा असेल तेव्हा ॲट्रिब्यूट मॅक्रोज वापरा.

Project Code: https://github.com/hyperlane-dev/hyperlane

Source: https://dev.to/tengxgfyrz67s/request-and-response-deep-dive-1j1b