Hyperlane-ലെ Request Method Filtering
വെബ് ആപ്ലിക്കേഷനുകൾ GET, POST, DELETE തുടങ്ങിയ വിവിധ HTTP മെത്തേഡുകൾ കൈകാര്യം ചെയ്യുന്നു. ഈ റിക്വസ്റ്റുകളെ ഫിൽട്ടർ ചെയ്യാൻ Hyperlane നിങ്ങൾക്ക് പല വഴികൾ നൽകുന്നു. നിങ്ങൾക്ക് റിക്വസ്റ്റുകളെ പ്രത്യേക ഹാൻഡ്ലറുകളിലേക്ക് റൂട്ട് ചെയ്യാനോ മെത്തേഡുകൾ പരിശോധിക്കാൻ മിഡിൽവെയർ (middleware) ഉപയോഗിക്കാനോ കഴിയും.
Hyperlane-ൽ മെത്തേഡുകൾ ഫിൽട്ടർ ചെയ്യാനുള്ള വഴികൾ താഴെ പറയുന്നവയാണ്:
ലളിതമായ റീഡ്-ഓൺലി (read-only) എൻഡ്പോയിന്റുകൾക്കായി #[is_get_method] ഉപയോഗിക്കുക. GET റിക്വസ്റ്റ് അല്ലാത്ത മറ്റേതൊരു റിക്വസ്റ്റും ഈ മാക്രോ നിരസിക്കുന്നു.
ഫ്ലെക്സിബിൾ റൂട്ടിംഗിനായി #[methods] ഉപയോഗിക്കുക. അനുവദനീയമായ മെത്തേഡുകളുടെ ഒരു ലിസ്റ്റ് നിങ്ങൾക്ക് നൽകാൻ കഴിയും. ഉദാഹരണത്തിന്, #[methods("GET", "POST")] ഡാറ്റ വായിക്കുന്നതിനും നിർമ്മിക്കുന്നതിനും ഒരേപോലെ അനുവദിക്കുന്നു.
സങ്കീർണ്ണമായ ലോജിക്കിനായി മാനുവൽ ചെക്കുകൾ ഉപയോഗിക്കുക. കോൺടെക്സ്റ്റിൽ (context) നിന്ന് മെത്തേഡ് എടുത്ത് എങ്ങനെ പ്രതികരിക്കണമെന്ന് തീരുമാനിക്കാൻ if-else സ്റ്റേറ്റ്മെന്റുകൾ ഉപയോഗിക്കാം.
റൂട്ട്-ലെവൽ കൺട്രോളിനായി #[filter] ഉപയോഗിക്കുക. ഒരേ പാതയിൽ (path) തന്നെ വ്യത്യസ്ത മെത്തേഡുകൾക്കായി പ്രത്യേക ഹാൻഡ്ലറുകൾ നിർമ്മിക്കാൻ ഇത് റൂട്ട് ഡെഫനിഷനുകളുമായി സംയോജിപ്പിക്കാം.
ലോഗിംഗിനോ (logging) ഡീബഗ്ഗിംഗിനോ (debugging) മിഡിൽവെയർ ഉപയോഗിക്കുക. നിങ്ങൾക്ക് മെത്തേഡ് വേർതിരിച്ചെടുത്ത് റിക്വസ്റ്റ് അറ്റ്രിബ്യൂട്ടുകളിൽ (request attributes) ചേർക്കാം.
നിങ്ങളുടെ API-യ്ക്കുള്ള മികച്ച രീതികൾ:
- കോഡ് വൃത്തിയായി സൂക്ഷിക്കുന്നതിനായി റീഡ്-ഓൺലി ടാസ്ക്കുകൾക്ക് #[is_get_method] ഉപയോഗിക്കുക.
- ഒരു എൻഡ്പോയിന്റിന് ഒന്നിലധികം തരം റിക്വസ്റ്റുകൾ ആവശ്യമായി വരുമ്പോൾ #[methods] ഉപയോഗിക്കുക.
- ഒരു ഉപയോക്താവ് പിന്തുണയ്ക്കാത്ത (unsupported) ഒരു മെത്തേഡ് അയക്കുകയാണെങ്കിൽ 405 സ്റ്റാറ്റസ് കോഡ് നൽകുക.
- കർശനമായ നിയമങ്ങൾ നിർമ്മിക്കാൻ ഫിൽട്ടറുകൾ സംയോജിപ്പിക്കുക. നിങ്ങൾക്ക് മെത്തേഡ്, ഹോസ്റ്റ്, പാത്ത് ലെങ്ത് (path length) എന്നിവ ഒരേസമയം പരിശോധിക്കാം.
വൃത്തിയുള്ളതും സംഘടിതവുമായ API-കൾ നിർമ്മിക്കാൻ ഈ ടൂളുകൾ നിങ്ങളെ സഹായിക്കുന്നു. അവ നിങ്ങളുടെ കോഡ് വായിക്കാനും പരിപാലിക്കാനും (maintain) എളുപ്പമാക്കുന്നു.
Project Code: https://github.com/hyperlane-dev/hyperlane
Source: https://dev.to/tengxgfyrz67s/request-method-filtering-35jk