PlusMagi's Blog By Pitt Phunsanit API,Backend,REST,Swagger,technology การเขียน OpenAPI / Swagger Spec: การสร้าง Data Models (DTOs) และ Reusable Schema

การเขียน OpenAPI / Swagger Spec: การสร้าง Data Models (DTOs) และ Reusable Schema

ในโลกของการพัฒนาซอฟต์แวร์ยุคปัจจุบัน สถาปัตยกรรมแบบ Microservices และการสื่อสารผ่าน API ได้กลายเป็นหัวใจหลักของระบบดิจิทัลเกือบทุกประเภท การที่บริการต่างๆ ต้องเชื่อมต่อกันอย่างราบรื่นและเชื่อถือได้ ทำให้ “สัญญา” (Contract) ระหว่างส่วนประกอบเหล่านั้นมีความสำคัญสูงสุด หากขาดสัญญานี้ไป ความไม่สอดคล้องกันของข้อมูลก็เป็นสาเหตุหลักของการเกิด Bug ที่ยากจะแก้ไข


เจาะลึกรายละเอียดและประเด็นสำคัญ

ในฐานะ Senior Developer เราต้องมอง OpenAPI Specification (OAS) ไม่ใช่แค่เครื่องมือทำเอกสาร แต่เป็น “แหล่งความจริงเดียว” (Single Source of Truth) สำหรับโครงสร้างข้อมูลทั้งหมด การกำหนด Data Models หรือ DTOs (Data Transfer Objects) อย่างชัดเจนภายใน Spec คือการบังคับใช้สัญญาทางเทคนิคที่ทำให้มั่นใจได้ว่าทั้งฝั่ง Client และ Server จะเข้าใจรูปแบบของข้อมูลชุดเดียวกันอย่างถูกต้อง

หัวใจสำคัญของการเขียน OpenAPI ที่มีประสิทธิภาพคือการใช้คุณสมบัติ Reusable Schema ภายใต้ `components/schemas` การทำเช่นนี้ช่วยให้เราสามารถนิยามโครงสร้างข้อมูลที่ซับซ้อน (เช่น UserProfile, OrderItem) เพียงครั้งเดียว และนำไปอ้างอิง (Reference) ในหลายๆ Endpoint ได้อย่างสม่ำเสมอ แทนที่จะต้องคัดลอกโค้ด Schema ซ้ำๆ กันในทุก Operation ซึ่งไม่เพียงแต่ทำให้ Spec สะอาดขึ้น แต่ยังลดโอกาสเกิดความขัดแย้งของข้อมูลด้วย


การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • การสร้าง Client SDKs อัตโนมัติ (Code Generation): OAS สามารถถูกใช้เป็น Input เพื่อให้เครื่องมือภายนอกสร้างโค้ดไคลเอนต์ (Client Stubs) หรือโมเดลภาษาโปรแกรม (DTO classes) ได้โดยอัตโนมัติ ทำให้ทีมพัฒนาไม่ต้องเสียเวลาเขียน Model ซ้ำซ้อน และมั่นใจได้ว่าโค้ดที่สร้างขึ้นตรงตาม Spec เสมอ
  • การตรวจสอบความถูกต้องของข้อมูล (Validation): เมื่อมี Schema ที่ชัดเจน เราสามารถนำมันไปใช้เป็น Validation Layer ได้ทั้งในระดับ Runtime หรือแม้แต่ในเครื่องมือ CI/CD เพื่อตรวจจับว่า Request Body ที่เข้ามานั้นมีโครงสร้างและประเภทข้อมูลที่ผิดพลาดก่อนที่จะถึง Business Logic จริง
  • การปรับปรุงประสบการณ์นักพัฒนา (DX): นักพัฒนารุ่นใหม่สามารถใช้ OAS เป็นเครื่องมือในการทำ Mocking หรือทดสอบ API ได้ทันทีโดยไม่ต้องรอให้ Backend เสร็จสมบูรณ์ ทำให้วงจรการพัฒนาสั้นลงอย่างมาก

สรุปได้ว่า การเขียน OpenAPI Spec ที่เน้นการสร้าง Data Models และ Reusable Schemas อย่างเป็นระบบ ไม่ใช่แค่เรื่องของเอกสารประกอบ แต่คือการยกระดับคุณภาพโค้ด (Code Quality) และความน่าเชื่อถือของระบบทั้งหมด มันเปลี่ยน API จากเพียงแค่ “ชุดฟังก์ชัน” ให้กลายเป็น “สัญญาทางข้อมูลที่สามารถนำไปใช้ซ้ำและตรวจสอบได้” ซึ่งเป็นรากฐานสำคัญของการสร้างระบบขนาดใหญ่ที่มีความยืดหยุ่นสูง


อ่านเพิ่มเติม