
จาก RFC 10008: The HTTP QUERY Method นั้น
ได้เพิ่ม QUERY method ใน HTTP เข้ามา
เป็นสิ่งที่เพิ่มเข้ามาเพื่อแก้ไขปัญหาระหว่างการใช้งาน GET และ POST นั่นเอง
เพื่อให้เข้าใจ มาดูตัวอย่างของการใช้งาน QUERY method
ตัวอย่างการค้นหาข้อมูล
ในการค้นหานั้น ต้องใส่เงื่อนไขต่าง ๆ มาได้
ทั้งการ filter
ทั้งการ sort
ทั้งการส่งข้อมูลการค้นหาในรูปแบบ JSON และ GraphQL payload
คำถามในการออกแบบนั้น จะใช้ GET หรือ POST สำหรับ endpoint นี้ ?
แน่นอนว่า คำตอบที่มักจะได้รับคือ POST
เนื่องจากใน request มาการส่งข้อมูลเยอะมาก ๆ
จะใช้ GET ก็ติดเรื่องความยาวของ URL ที่รองรับ รวมทั้งมีปัญหาเรื่องของ security !!
ดังนั้นใช้งาน POST ดีกว่า => POST /search
ใช้งานได้ปกติ แต่ในแง่ของ semantic มันไม่ถูกต้อง รวมทั้งเรื่องของ caching และ idempotent
ดังนั้น HTTP Query method จึงเข้ามาช่วยแก้ไขปัญหานี้นั่นเอง
ตัวอย่างของการออกแบบ
มาลองใช้งานพัฒนาด้วย .NET 10 กันนิดหน่อย
จากนั้นทำการ start และลองยิง request ปกติด้วย HTTP GET และ QUERY method ผ่าน curl
จะได้ผลการทำงานดังนี้
ทำความรู้จักกันไว้ก่อน ทั้งในฐานะคนออกแบบ คนพัฒนาและคนทดสอบ
เพื่อเตรียมความพร้อมไว้ก่อน
โดยระบบต่าง ๆ ก็กำลังปรับเพื่อรองรับมาตรฐานใหม่ตัวนี้
น่าจะครอบคลุมในเร็ววันนี้
ทั้ง CDN, API Gateway, Framework และ Library (server และ client) ต่าง ๆ
ลองศึกษาเพิ่มเติมกันครับ