𝗥𝗲𝗤𝗨𝗘𝗦𝗧 𝗔𝗡𝗗 𝗥𝗘𝗦𝗣𝗢𝗡𝗦𝗘 𝗗𝗘𝗘𝗣 𝗗𝗜𝗩𝗘 ರಿಕ್ವೆಸ್ಟ್ ಮತ್ತು ರೆಸ್ಪಾನ್ಸ್ ಆಳವಾದ ವಿಶ್ಲೇಷಣೆ

ಪ್ರತಿಯೊಂದು HTTP ಸರ್ವರ್ ಒಂದು ನಿರ್ದಿಷ್ಟ ಚಕ್ರವನ್ನು (cycle) ಅನುಸರಿಸುತ್ತದೆ. ಇದು ಕನೆಕ್ಷನ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ರಿಕ್ವೆಸ್ಟ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ, ರೂಟ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ರೆಸ್ಪಾನ್ಸ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ.

Hyperlane ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ನೀವು ನೇರವಾದ ಮೆಥಡ್ ಕಾಲ್‌ಗಳು ಅಥವಾ ಸರಳವಾದ ಅಟ್ರಿಬ್ಯೂಟ್ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಚಕ್ರವನ್ನು ನಿರ್ವಹಿಸಬಹುದು.

Hyperlane ರಿಕ್ವೆಸ್ಟ್ ಲೈಫ್‌ಸೈಕಲ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ:

  • ಸರ್ವರ್ TCP ಕನೆಕ್ಷನ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ.
  • ಇದು ಸ್ಟ್ರೀಮ್ ಅನ್ನು Request ಆಬ್ಜೆಕ್ಟ್‌ಗೆ ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ.
  • Request ಮಿಡ್ಲ್‌ವೇರ್ ಡೇಟಾವನ್ನು ಪ್ರೊಸೆಸ್ ಮಾಡುತ್ತದೆ.
  • ಸರ್ವರ್ ರಿಕ್ವೆಸ್ಟ್ ಅನ್ನು ರೂಟ್‌ಗೆ ಹೊಂದಿಸುತ್ತದೆ.
  • ರೂಟ್ ಹ್ಯಾಂಡ್ಲರ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ.
  • Response ಮಿಡ್ಲ್‌ವೇರ್ ಚಲಿಸುತ್ತದೆ.
  • ರೆಸ್ಪಾನ್ಸ್ ಕ್ಲೈಂಟ್‌ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ.

ರಿಕ್ವೆಸ್ಟ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸುವುದು: ರಿಕ್ವೆಸ್ಟ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ನೀವು 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 ನಿಮಗೆ ಕೆಲಸ ಮಾಡಲು ಎರಡು ಮಾರ್ಗಗಳನ್ನು ನೀಡುತ್ತದೆ. ನಿಮಗೆ ಸ್ಪಷ್ಟವಾದ ನಿಯಂತ್ರಣ ಬೇಕಾದಾಗ ಮೆಥಡ್ ಕಾಲ್‌ಗಳನ್ನು ಬಳಸಿ. ನೀವು ಸ್ವಚ್ಛವಾದ ಮತ್ತು ವೇಗದ ಕೋಡ್ ಬಯಸಿದಾಗ ಅಟ್ರಿಬ್ಯೂಟ್ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಬಳಸಿ.

ಪ್ರಾಜೆಕ್ಟ್ ಕೋಡ್: https://github.com/hyperlane-dev/hyperlane

ಮೂಲ: https://dev.to/tengxgfyrz67s/request-and-response-deep-dive-1j1b