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

ప్రతి HTTP సర్వర్ ఒక నిర్దిష్ట సైకిల్‌ను అనుసరిస్తుంది. ఇది కనెక్షన్‌ను స్వీకరిస్తుంది, రిక్వెస్ట్‌ను పార్స్ చేస్తుంది, రూట్‌ను మ్యాచ్ చేస్తుంది మరియు రెస్పాన్స్‌ను పంపుతుంది.

Hyperlane ఈ ప్రక్రియను సులభతరం చేస్తుంది. మీరు డైరెక్ట్ మెథడ్ కాల్స్ లేదా సింపుల్ అట్రిబ్యూట్ మాక్రోలను ఉపయోగించి ఈ సైకిల్‌ను నిర్వహించవచ్చు.

Hyperlane రిక్వెస్ట్ లైఫ్‌సైకిల్‌ను ఎలా నిర్వహిస్తుంది:

  • సర్వర్ TCP కనెక్షన్‌ను స్వీకరిస్తుంది.
  • ఇది స్ట్రీమ్‌ను Request ఆబ్జెక్ట్‌గా పార్స్ చేస్తుంది.
  • Request middleware డేటాను ప్రాసెస్ చేస్తుంది.
  • సర్వర్ రిక్వెస్ట్‌ను ఒక రూట్‌తో మ్యాచ్ చేస్తుంది.
  • రూట్ హ్యాండ్లర్ ఎగ్జిక్యూట్ అవుతుంది.
  • Response middleware రన్ అవుతుంది.
  • రెస్పాన్స్ క్లయింట్‌కు తిరిగి వెళుతుంది.

రిక్వెస్ట్ డేటాను యాక్సెస్ చేయడం: రిక్వెస్ట్ నుండి డేటాను పొందడానికి మీరు Context ఆబ్జెక్ట్‌ను ఉపయోగించవచ్చు. • HTTP మెథడ్ కోసం get_method(). • URL పాత్ కోసం get_path(). • అన్ని హెడర్ల కోసం get_headers(). • JSON బాడీలను పార్స్ చేయడానికి get_body_json(). • నిర్దిష్ట పారామితులను కనుగొనడానికి try_get_query().

డేటా ఎక్స్‌ట్రాక్షన్‌ను ఆటోమేట్ చేయడానికి Hyperlane అట్రిబ్యూట్ మాక్రోలను కూడా ఉపయోగిస్తుంది. మాన్యువల్ కోడ్ రాయడానికి బదులుగా, మీరు ఈ క్రింది ట్యాగ్‌లను ఉపయోగించవచ్చు:

  • #[request_body_json] JSONని తక్షణమే పార్స్ చేయడానికి.
  • #[request_query] URL పారామితులను పొందడానికి.
  • #[request_header] నిర్దిష్ట హెడర్లను పొందడానికి.

రూట్ మేనేజ్‌మెంట్ మరియు ఫిల్టరింగ్: మీరు {param} సింటాక్స్‌ని ఉపయోగించి డైనమిక్ రూట్‌లను నిర్వచించవచ్చు. ఉదాహరణకు: "/test/{text}". Hyperlane రూట్ స్థాయిలో రిక్వెస్ట్‌లను ఫిల్టర్ చేయడానికి కూడా అనుమతిస్తుంది. మీరు:

  • #[host]తో నిర్దిష్ట హోస్ట్‌లను మ్యాచ్ చేయవచ్చు.
  • #[reject_referer]తో నిర్దిష్ట రిఫరర్‌లను తిరస్కరించవచ్చు.
  • #[filter]తో కస్టమ్ లాజిక్‌ను వర్తింపజేయవచ్చు.

రెస్పాన్స్‌లు మరియు కుకీలను నిర్వహించడం: మీరు Context ఆబ్జెక్ట్ ద్వారా రెస్పాన్స్‌ను నియంత్రించవచ్చు. మీరు స్టేటస్ కోడ్‌లు, హెడర్‌లు మరియు బాడీలను మాన్యువల్‌గా సెట్ చేయవచ్చు. దీనిని సులభతరం చేయడానికి, రెస్పాన్స్ మాక్రోలను ఉపయోగించండి:

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

సెషన్ మేనేజ్‌మెంట్ కోసం, 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