Cloudflare เปิดโตรงการ Cap'n Web โปรโตคอลสำหรับการเรียก RPC ระหว่างซอฟต์แวร์ JavaScript/TypeScript ที่เปิดทางให้ไคลเอนต์สามารถเรียกข้อมูลได้ซับซ้อนโดยที่ไม่ต้องเรียก API หลายครั้งแต่ยังสามารถเขียนโปรแกรมได้เป็นธรรมชาติ
ปัญหาการเรียก API หลายครั้งเป็นปัญหาของ REST API ที่หลายโครงการพยายามแก้ไขเพราะการเรียก API จากเซิร์ฟเวอร์นั้นมักใช้เวลานาน เช่น หากมี API GET /user และ /user/friends เมื่อไคลเอนต์ต้องการรายชื่อผู้ใช้และเพื่อนของแต่ละคนก็ต้องเรียก 2 API แยกจากกัน ทำให้กระบวนการทำงานช้าลงมาก
ก่อนหน้านี้โครงการ GraphQL พยายามแก้ปัญหานี้ด้วยการเปิดให้ไคลเอนต์คิวรีข้อมูลทั้งหมดที่ต้องการได้เอง แต่ปัญหาสำคัญคือ GraphQL เป็นภาษาของตัวเองต่างจากการพัฒนาเว็บอย่าง JavaScript/TypeScript โดยสิ้นเชิง, และตัวภาษาออกแบบมาเพื่อคิวรีเท่านั้นไม่สามารถดัดแปลงแก้ไขข้อมูลได้เลย
หน้าตา API ของ Cap'n Web นั้นคล้ายกับ REST API ตามปกติ แต่ตัวโปรโตคอลมีสองฟีเจอร์สำคัญ คือ promise pipelining สำหรับการเรียก API หลายๆ ตัวในการเรียกข้ามเครื่องครั้งเดียว และ object references สำหรับการอ้างอิงออปเจกต์ระหว่างการเรียก API ได้ ทำให้โค้ดที่เหมือนเป็นการเรียก API หลายรอบกลับยิง request ผ่านเน็ตเวิร์คเพียงรอบเดียวเท่านั้น
แถวทางการทำ pipeline เปิดทางให้ไคลเอนต์สามารถส่งคำสั่งประมวลผลบางส่วนไปยังเซิร์ฟเวอร์ได้ เช่น คำสั่ง map ในภาพตัวอย่าง สามารถเรียก API listFriends มาประกอบกับ getUserPhoto ได้ภายใน request เดียวเท่านั้น
ตอนนี้โครงการ Cap'n Web ยังเป็นโครงการทดลองเท่านั้น แต่ Cloudflare ก็ใช้งานภายในแล้ว เช่น การทำ remote-binding ใน Wrangler ตัวโครงการเป็นโอเพนซอร์สสัญญาอนุญาต MIT ที่ใช้งานได้อิสระ
ที่มา - Cloudflare
on
ออกแบบฝั่ง frontend…
rattananen Tue, 23/09/2025 - 12:33
ออกแบบ API ฝั่ง client หรูหราเกินไป
server ก็เขียนลำบากอีก ไปทำ server load หนักกว่าเดิม
เรื่องโหลดหนักนี่ไม่แน่ใจ…
lew Tue, 23/09/2025 - 12:43
In reply to ออกแบบฝั่ง frontend… by rattananen
เรื่องโหลดหนักนี่ไม่แน่ใจ แต่อ่าน doc แล้วตัวนี้ง่ายกว่า GraphQL ชัดเจนนะครับ แทบจะย้าย REST API เดิมๆ ไปอยู่ใน object ของมันได้เลย
อยากลองใช้งานเลย
btoy Tue, 23/09/2025 - 15:23
อยากลองใช้งานเลย