ในการพัฒนาระบบงานนั้น
เรามักจะแยกส่วนการทำงานต่าง ๆ ออกจากกัน
แต่จำเป็นต้องการติดต่อสื่อสารสารกันผ่านระบบ network
และมีรูปแบบของการติดต่อผ่านสิ่งที่เรียกว่า
API (Application Programming Interface)
ไม่ว่าจะอยู่ในรูปแบบของ code หรือตาม protocol ต่าง ๆ ก็ว่าไป

โดยที่คุณสมบัติของ API มักจะประกอบไปด้วย

  • Customer หรือ Consumer-driven
  • ใช้งานง่าย หรือ ยากต่อการใช้ผิด
  • ค้นหาได้ง่าย
  • มีหน้าที่ที่ชัดเจน
  • มีความปลอดภัย
  • รองรับการใช้งานที่สูงขึ้น
  • มีประสิทธิภาพที่ดี
  • Backward-compatibility
  • มีรูปแบบที่เป็นมาตรฐาน หรือ ทำงานร่วมกับระบบอื่น ๆ ได้ง่าย

เมื่อเราไปดูเรื่องของรูปแบบ API ระหว่างระบบหรือ service

พบว่ามีหลายรูปแบบตามอายุหรือวิวัฒนาการเลย
ซึ่งเรียงตามดังนี้

  • RPC (Remote Procedure Call)
  • CORBA (Common Object) Request Broker Architecture)
  • XML-RPC
  • SOAP (Simple Object Access Protocol)
  • REST
  • JSON-RPC
  • GraphQL, Falcor
  • gRPC

ปล. ใครรู้จักทั้งหมดนี้ แสดงว่าอายุไม่น้อยแล้วนะ !!

ในแต่ละแบบนั้นล้วนมีข้อดีและข้อเสียแตกต่างกันไป

รวมทั้ง use case ของการใช้งานเช่นกับ เช่น

  • Abstraction ของข้อมูล
  • การใช้งานที่ง่าย ในมุมมองของผู้ใช้งาน หรือ ผู้สร้าง
  • แยกการทำงานกันชัดเจน หรือ ผูกมัดกันให้น้อย (Loose coupling)
  • เรื่องของขนาดของ bandwidth ที่ใช้งาน
  • Learning curve

ผู้นำไปใช้งานนั้น จำเป็นต้องรู้และเข้าใจเช่นกันว่า
รูปแบบของ API แต่ละอย่างเป็นอย่างไร
มีข้อดีข้อเสียกับ use case ของเราอย่างไร
เพื่อช่วยให้เราเลือกได้อย่างเหมาะสม
ลองศึกษาเพิ่มเติมกันดูครับ