การกรอง Request Method ใน Hyperlane

เว็บแอปพลิเคชันจัดการกับ HTTP method ต่างๆ เช่น GET, POST และ DELETE โดย Hyperlane มีหลายวิธีในการกรองคำขอเหล่านี้ คุณสามารถกำหนดเส้นทางคำขอไปยัง handler เฉพาะ หรือใช้ middleware เพื่อตรวจสอบ method ได้

ต่อไปนี้คือวิธีต่างๆ ในการกรอง method ใน Hyperlane:

  • ใช้ #[is_get_method] สำหรับ endpoint ที่เป็นแบบ read-only อย่างง่าย macro นี้จะปฏิเสธคำขอใดๆ ที่ไม่ใช่ GET request

  • ใช้ #[methods] สำหรับการทำ routing ที่ยืดหยุ่น คุณสามารถส่งรายการ method ที่อนุญาตได้ ตัวอย่างเช่น #[methods("GET", "POST")] จะอนุญาตทั้งการอ่านและการสร้างข้อมูล

  • ใช้การตรวจสอบด้วยตนเองสำหรับตรรกะที่ซับซ้อน คุณสามารถดึง method ออกมาจาก context และใช้คำสั่ง if-else เพื่อตัดสินใจว่าจะตอบสนองอย่างไร

  • ใช้ #[filter] สำหรับการควบคุมในระดับ route คุณสามารถใช้ร่วมกับการกำหนด route เพื่อสร้าง handler เฉพาะสำหรับ method ต่างๆ บน path เดียวกัน

  • ใช้ middleware สำหรับการทำ logging หรือ debugging คุณสามารถดึง method ออกมาและเพิ่มเข้าไปใน request attributes ของคุณได้

Best practices สำหรับ API ของคุณ:

  • ใช้ #[is_get_method] สำหรับงานที่เป็นแบบ read-only เพื่อให้โค้ดสะอาด
  • ใช้ #[methods] เมื่อ endpoint จำเป็นต้องรองรับคำขอมากกว่าหนึ่งประเภท
  • ส่งคืน status code 405 หากผู้ใช้ส่ง method ที่ไม่รองรับมา
  • รวมตัวกรองเข้าด้วยกันเพื่อสร้างกฎที่เข้มงวด คุณสามารถตรวจสอบทั้ง method, host และความยาวของ path ได้พร้อมกันในคราวเดียว

เครื่องมือเหล่านี้จะช่วยให้คุณสร้าง API ที่สะอาดและเป็นระเบียบ ช่วยให้โค้ดของคุณอ่านง่ายและบำรุงรักษาได้ง่ายขึ้น

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

Source: https://dev.to/tengxgfyrz67