PlusMagi's Blog By Pitt Phunsanit Backend,Business REST API Naming Conventions: กฎทองการตั้งชื่อ Endpoints ให้สวยงาม อ่านง่าย และเป็นสากล

REST API Naming Conventions: กฎทองการตั้งชื่อ Endpoints ให้สวยงาม อ่านง่าย และเป็นสากล

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ การเชื่อมต่อระหว่างระบบต่างๆ ผ่าน Application Programming Interfaces (APIs) ได้กลายเป็นกระดูกสันหลังที่สำคัญที่สุดของผลิตภัณฑ์ดิจิทัลเกือบทุกชนิด อย่างไรก็ตาม ความซับซ้อนในการสื่อสารนี้มักนำมาซึ่งปัญหาด้านการออกแบบ โดยเฉพาะอย่างยิ่งในส่วนของการตั้งชื่อ Endpoints ที่ไม่เป็นมาตรฐาน ทำให้ผู้พัฒนาต้องเสียเวลาทำความเข้าใจว่าทรัพยากรใดถูกจัดการด้วยคำสั่งใด การมีแนวทางที่ชัดเจนจึงไม่ใช่แค่เรื่องของความสวยงาม แต่คือรากฐานสำคัญที่กำหนดความสามารถในการขยายตัวและความง่ายในการใช้งานของระบบทั้งหมด


หลักการสถาปัตยกรรม: การมองทุกอย่างเป็นทรัพยากร (Resources)

หัวใจหลักของการออกแบบ RESTful API คือการมองทุกอย่างเป็น “ทรัพยากร” (Resources) ซึ่งควรถูกแทนด้วยคำนามที่เป็นพหูพจน์เสมอ การตั้งชื่อที่ดีจึงต้องสะท้อนถึงแนวคิดนี้ เช่น แทนที่จะใช้ Endpoint ที่บ่งบอกการกระทำอย่าง `/getUsers` หรือ `/userProfile` เราควรใช้ `/users/{id}` เพื่อบ่งชี้ว่าเรากำลังจัดการกับกลุ่มของทรัพยากรผู้ใช้งาน (User) ไม่ใช่การกระทำใดๆ

การยึดหลักการนี้ไม่ได้เป็นเพียงแค่ข้อแนะนำ แต่คือการกำหนดโครงสร้างทางตรรกะที่สอดคล้องกับฐานข้อมูลที่อยู่เบื้องหลัง ไม่ว่าคุณจะใช้ PostgreSQL หรือระบบใดก็ตาม การเข้าถึงข้อมูลควรถูกจำลองให้เป็น ‘การอ่าน/เขียนทรัพยากร’ เสมอ

ความสม่ำเสมอและความเป็นสากล (Consistency and Standardization)

นอกเหนือจากการใช้คำนามพหูพจน์แล้ว ความสม่ำเสมอ (Consistency) ในรูปแบบการตั้งชื่อก็เป็นสิ่งสำคัญไม่แพ้กัน ในระดับสถาปัตยกรรม เราควรเลือกใช้รูปแบบตัวพิมพ์ (Casing) เพียงรูปแบบเดียวตลอดทั้ง API เช่น การใช้ snake_case (ตัวพิมพ์เล็กคั่นด้วยขีดล่าง) หรือ kebab-case (ตัวพิมพ์เล็กคั่นด้วยขีดกลาง) และต้องบังคับใช้รูปแบบนี้อย่างเคร่งครัด

เมื่อพิจารณาถึงการเชื่อมต่อกับฐานข้อมูลอย่าง PostgreSQL ข้อมูลทรัพยากรของเรามักถูกจัดเก็บในตารางที่ใช้ snake_case อยู่แล้ว ดังนั้นการใช้ snake_case ในการตั้งชื่อ Endpoints จึงเป็นแนวทางที่สอดคล้องและเป็นธรรมชาติที่สุดสำหรับนักพัฒนาที่คุ้นเคยกับระบบหลังบ้าน

ตัวอย่างการเชื่อมโยง API กับ PostgreSQL

สมมติว่าเรามีตารางชื่อ products ใน PostgreSQL ซึ่งเป็นทรัพยากรหลัก การเรียกดูรายการสินค้าทั้งหมดควรเป็น GET /products ซึ่งสอดคล้องกับการรันคำสั่ง SQL เพื่อดึงข้อมูลทั้งหมด:

SQL

SELECT product_id, product_name, price FROM products WHERE is_active = TRUE;

หากเราต้องการดึงข้อมูลสินค้าเฉพาะรายการ (Resource ID) เราจะใช้ GET /products/{id} ซึ่งจะถูกแมปโดย Backend Logic ไปยังการ Query ที่เจาะจง:

SQL

SELECT * FROM products WHERE product_id = '123';

บทสรุป: กฎทองของการออกแบบ API

การปฏิบัติตาม RESTful Naming Conventions ไม่ใช่แค่เรื่องของความสวยงาม แต่คือการสร้างสัญญา (Contract) ที่ชัดเจนระหว่างระบบหน้าบ้านและหลังบ้าน การยึดหลักการใช้คำนามพหูพจน์ การรักษาความสม่ำเสมอของรูปแบบ (เช่น snake_case) และการให้ Endpoints สะท้อนถึง ‘ทรัพยากร’ ที่ถูกจัดการ จะช่วยให้ API ของคุณมีความเป็นสากล (Universal) เข้าใจง่าย และที่สำคัญที่สุดคือช่วยให้ระบบของคุณสามารถขยายตัว (Scalability) ได้อย่างยั่งยืนในระยะยาว