การกรอง 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