રિક્વેસ્ટ અને રિસ્પોન્સનું ઊંડું વિશ્લેષણ

દરેક HTTP સર્વર એક ચોક્કસ ચક્ર અનુસરે છે. તે કનેક્શન સ્વીકારે છે, રિક્વેસ્ટને પાર્સ કરે છે, રૂટ સાથે મેચ કરે છે અને રિસ્પોન્સ મોકલે છે.

Hyperlane આ પ્રક્રિયાને સરળ બનાવે છે. તમે ડાયરેક્ટ મેથડ કોલ્સ અથવા સાદા એટ્રિબ્યુટ મેક્રોઝનો ઉપયોગ કરીને આ ચક્રનું સંચાલન કરી શકો છો.

Hyperlane રિક્વેસ્ટ લાઇફસાયકલને કેવી રીતે હેન્ડલ કરે છે:

  • સર્વર TCP કનેક્શન સ્વીકારે છે.
  • તે સ્ટ્રીમને Request ઓબ્જેક્ટમાં પાર્સ કરે છે.
  • Request middleware ડેટા પ્રોસેસ કરે છે.
  • સર્વર રિક્વેસ્ટને રૂટ સાથે મેચ કરે છે.
  • રૂટ હેન્ડલર એક્ઝિક્યુટ થાય છે.
  • Response middleware ચાલે છે.
  • રિસ્પોન્સ ક્લાયન્ટ પાસે પાછો જાય છે.

રિક્વેસ્ટ ડેટા એક્સેસ કરવો: તમે રિક્વેસ્ટમાંથી ડેટા મેળવવા માટે Context ઓબ્જેક્ટનો ઉપયોગ કરી શકો છો. • get_method() HTTP મેથડ માટે. • get_path() URL પાથ માટે. • get_headers() તમામ હેડર્સ માટે. • get_body_json() 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