கோரிக்கை மற்றும் பதில் குறித்த ஆழமான ஆய்வு (REQUEST AND RESPONSE DEEP DIVE)

ஒவ்வொரு HTTP சேவையகமும் (server) ஒரு குறிப்பிட்ட சுழற்சியைப் பின்பற்றுகிறது. அது ஒரு இணைப்பை ஏற்றுக்கொண்டு, கோரிக்கையை (request) பகுப்பாய்வு செய்து, ஒரு பாதையை (route) பொருத்தி, ஒரு பதிலை (response) அனுப்புகிறது.

Hyperlane இந்தச் செயல்முறையை எளிதாக்குகிறது. நேரடி மெத்தட் அழைப்புகள் (method calls) அல்லது எளிய அட்ரிபியூட் மேக்ரோக்களைப் (attribute macros) பயன்படுத்தி இந்தச் சுழற்சியை நீங்கள் நிர்வகிக்கலாம்.

Hyperlane கோரிக்கை வாழ்க்கைச் சுழற்சியை (Request Lifecycle) எவ்வாறு கையாள்கிறது:

  • சேவையகம் ஒரு TCP இணைப்பை ஏற்றுக்கொள்கிறது.
  • இது ஸ்ட்ரீமை (stream) ஒரு Request பொருளாகப் பகுப்பாய்வு செய்கிறது.
  • Request middleware தரவைச் செயலாக்குகிறது.
  • சேவையகம் கோரிக்கையை ஒரு பாதையுடன் (route) பொருத்துகிறது.
  • Route handler செயல்படுத்தப்படுகிறது.
  • Response middleware இயங்குகிறது.
  • பதில் கிளையண்டிற்கு (client) மீண்டும் அனுப்பப்படுகிறது.

கோரிக்கை தரவை அணுகுதல் (Accessing Request Data): ஒரு கோரிக்கையிலிருந்து தரவை எடுக்க நீங்கள் Context பொருளைப் பயன்படுத்தலாம். • HTTP முறையைப் பெற get_method(). • URL பாதையைப் பெற get_path(). • அனைத்து ஹெடர்களுக்கும் (headers) get_headers(). • JSON பாடிகளைப் பகுப்பாய்வு செய்ய get_body_json(). • குறிப்பிட்ட அளவுருக்களைக் (parameters) கண்டறிய try_get_query().

தரவுப் பிரித்தெடுத்தலைத் தானியக்கமாக்க Hyperlane அட்ரிபியூட் மேக்ரோக்களையும் பயன்படுத்துகிறது. கைமுறையாகக் குறியீடு (code) எழுதுவதற்குப் பதிலாக, நீங்கள் பின்வரும் டேக்ஸ்களைப் (tags) பயன்படுத்தலாம்:

  • #[request_body_json] JSON-ஐ உடனடியாகப் பகுப்பாய்வு செய்ய.
  • #[request_query] URL அளவுருக்களைப் பெற.
  • #[request_header] குறிப்பிட்ட ஹெடர்களை எடுக்க.

பாதை மேலாண்மை மற்றும் வடிகட்டுதல் (Route Management and Filtering): {param} தொடரியலைப் (syntax) பயன்படுத்தி நீங்கள் டைனமிக் பாதைகளை வரையறுக்கலாம். உதாரணமாக: "/test/{text}". பாதையின் மட்டத்திலேயே (route level) கோரிக்கைகளை வடிகட்டவும் Hyperlane அனுமதிக்கிறது. உங்களால் முடியும்:

  • #[host] மூலம் குறிப்பிட்ட ஹோஸ்ட்களைப் பொருத்தலாம்.
  • #[reject_referer] மூலம் குறிப்பிட்ட referers-களை நிராகரிக்கலாம்.
  • #[filter] மூலம் தனிப்பயன் தர்க்கத்தைப் (custom logic) பயன்படுத்தலாம்.

பதில்கள் மற்றும் குக்கீகளை நிர்வகித்தல் (Managing Responses and Cookies): நீங்கள் Context பொருளின் மூலம் பதிலைக்கட்டுப்படுத்துகிறீர்கள். உங்களால் ஸ்டேட்டஸ் கோட்கள் (status codes), ஹெடர்கள் மற்றும் பாடிகளை (bodies) கைமுறையாக அமைக்க முடியும். இதை எளிமையாக்க, response மேக்ரோக்களைப் பயன்படுத்தவும்:

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

செஷன் மேலாண்மைக்காக (session management), CookieBuilder-ஐப் பயன்படுத்தவும். இது காலாவதி தேதிகள், டொமைன்கள் மற்றும் HttpOnly அல்லது Secure போன்ற பாதுகாப்பு கொடிகளை (security flags) ஒரு தெளிவான தொடரியலுடன் அமைக்க அனுமதிக்கிறது.

உங்கள் பதில் தயாரானதும், build() மற்றும் try_send() போன்ற மெத்தட்களைப் பயன்படுத்தி அதை ஸ்ட்ரீம் மூலம் அனுப்பலாம்.

Hyperlane உங்களுக்கு வேலை செய்ய இரண்டு வழிகளை வழங்குகிறது. உங்களுக்குத் தெளிவான கட்டுப்பாடு தேவைப்படும்போது மெத்தட் அழைப்புகளைப் பயன்படுத்தவும். சுத்தமான மற்றும் வேகமான குறியீடு தேவைப்படும்போது அட்ரிபியூட் மேக்ரோக்களைப் பயன்படுத்தவும்.

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

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