فیلتر کردن متد درخواست در Hyperlane

اپلیکیشن‌های وب متدهای مختلف HTTP مانند GET، POST و DELETE را مدیریت می‌کنند. Hyperlane چندین راه برای فیلتر کردن این درخواست‌ها در اختیار شما قرار می‌دهد. شما می‌توانید درخواست‌ها را به هندلرهای (handlers) خاصی هدایت کنید یا از میان‌افزار (middleware) برای بررسی متدها استفاده کنید.

در اینجا روش‌های فیلتر کردن متدها در Hyperlane آورده شده است:

  • از #[is_get_method] برای نقاط پایانی (endpoints) ساده‌ی فقط-خواندنی استفاده کنید. این ماکرو هر درخواستی را که از نوع GET نباشد، رد می‌کند.

  • از #[methods] برای مسیریابی منعطف استفاده کنید. شما می‌توانید لیستی از متدهای مجاز را ارسال کنید. برای مثال، #[methods("GET", "POST")] اجازه خواندن و ایجاد داده را به هر دو متد می‌دهد.

  • برای منطق‌های پیچیده از بررسی‌های دستی استفاده کنید. می‌توانید متد را از context استخراج کرده و از دستورات if-else برای تصمیم‌گیری در مورد نحوه پاسخگویی استفاده کنید.

  • از #[filter] برای کنترل در سطح مسیر (route) استفاده کنید. می‌توانید این مورد را با تعاریف مسیر ترکیب کنید تا هندلرهای خاصی برای متدهای مختلف در یک مسیر یکسان ایجاد کنید.

  • از middleware برای ثبت وقایع (logging) یا عیب‌یابی (debugging) استفاده کنید. می‌توانید متد را استخراج کرده و آن را به ویژگی‌های (attributes) درخواست خود اضافه کنید.

بهترین روش‌ها برای API شما:

  • برای وظایف فقط-خواندنی از #[is_get_method] استفاده کنید تا کد تمیز باقی بماند.
  • زمانی که یک endpoint به بیش از یک نوع درخواست نیاز دارد، از #[methods] استفاده کنید.
  • اگر کاربر متدی را ارسال کرد که پشتیبانی نمی‌شود، کد وضعیت 405 را برگردانید.
  • فیلترها را برای ایجاد قوانین سخت‌گیرانه ترکیب کنید. می‌توانید متد، میزبان (host) و طول مسیر را همزمان بررسی کنید.

این ابزارها به شما کمک می‌کنند تا APIهای تمیز و سازمان‌یافته بسازید. آن‌ها خواندن و نگهداری کد شما را آسان‌تر می‌کنند.

کد پروژه: https://github.com/hyperlane-dev/hyperlane

منبع: https://dev.to/tengxgfyrz67s/request-method-filtering-35jk