REST คืออะไร? แนวคิดพื้นฐาน
จากบทที่แล้ว เราได้รู้จักกับ API และความสำคัญของมัน ในบทนี้ เราจะมาเจาะลึกถึงสถาปัตยกรรมที่ได้รับความนิยมอย่างมากในการพัฒนา Web API นั่นคือ REST
RESTful คืออะไร?
REST ย่อมาจาก REpresentational State Transfer เป็นสถาปัตยกรรมสำหรับการสร้าง Web API ที่เน้นการใช้มาตรฐาน HTTP เพื่อสื่อสารระหว่าง Client และ Server พูดง่ายๆ คือ REST คือแนวทางในการออกแบบ API ที่ทำให้การแลกเปลี่ยนข้อมูลเป็นไปอย่างมีประสิทธิภาพและเข้าใจง่าย
API ที่ออกแบบตามหลักการของ REST จะเรียกว่า RESTful API
ทำไมต้อง RESTful? เพราะมันทำให้ API ของคุณ:
- Scalable: ขยายระบบได้ง่าย รองรับผู้ใช้งานจำนวนมาก
- Maintainable: แก้ไขและดูแลรักษาง่าย
- Interoperable: ทำงานร่วมกับระบบอื่นๆ ได้หลากหลาย
- Easy to Understand: เข้าใจง่ายทั้งสำหรับผู้พัฒนาและผู้ใช้งาน
หลักการสำคัญของ REST
REST มีหลักการสำคัญ 6 ข้อที่ควรรู้:
- Client-Server: Client และ Server ต้องแยกจากกัน Client ทำหน้าที่แสดงผลและรับข้อมูล ส่วน Server ทำหน้าที่ประมวลผลและจัดเก็บข้อมูล การแยกส่วนนี้ทำให้ทั้งสองฝั่งสามารถพัฒนาแยกกันได้
- Stateless: Server ไม่เก็บข้อมูล Session ของ Client แต่ละ Request จาก Client ต้องมีข้อมูลที่จำเป็นทั้งหมด เพื่อให้ Server สามารถประมวลผลได้โดยไม่ต้องอ้างอิงถึง Request ก่อนหน้า ทำให้ Server รองรับ Request จำนวนมากได้ดี
- Cacheable: Response จาก Server สามารถ Cache ได้ทั้งที่ Client และ Server เพื่อลดภาระของ Server และเพิ่มความเร็วในการตอบสนอง
- Layered System: สถาปัตยกรรมสามารถมี Layer เพิ่มเติมได้ เช่น Load Balancer, Proxy Server โดยที่ Client ไม่จำเป็นต้องรู้ว่ากำลังคุยกับ Server ตัวไหน
- Uniform Interface: Client และ Server สื่อสารกันผ่าน Interface ที่เป็นมาตรฐาน ทำให้ทั้งสองฝั่งสามารถพัฒนาแยกกันได้ และ API มีความสอดคล้องกันทั่วทั้งระบบ หลักการนี้ประกอบด้วย 4 ส่วนย่อย:
- Resource Identification: ทุก Resource (เช่น ข้อมูลผู้ใช้งาน, สินค้า) ต้องมี Identifier ที่เป็น Unique (มักจะเป็น URL)
- Resource Manipulation through Representations: Client สามารถจัดการ Resource ได้โดยการส่ง Representation (เช่น JSON, XML) ไปยัง Server
- Self-Descriptive Messages: ทุก Message (Request และ Response) ต้องมีข้อมูลเพียงพอที่ Client และ Server จะเข้าใจได้
- Hypermedia as the Engine of Application State (HATEOAS): Server จะส่ง Hyperlink ไปยัง Client เพื่อให้ Client รู้ว่าจะต้องทำอะไรต่อไป (Advanced Topic, ไม่อธิบายในบทนี้)
- Code on Demand (Optional): Server สามารถส่ง Code (เช่น JavaScript) ไปยัง Client เพื่อให้ Client ทำงานบางอย่างได้ (ไม่ค่อยพบในการใช้งานจริง)
หลักการเหล่านี้อาจดูซับซ้อนในตอนแรก แต่เมื่อเข้าใจแล้วจะช่วยให้คุณออกแบบ API ที่มีประสิทธิภาพและง่ายต่อการบำรุงรักษา
ตัวอย่างการออกแบบ RESTful API
ลองมาดูตัวอย่างการออกแบบ API สำหรับจัดการข้อมูล Blog Posts
Resource: Blog Post
Identifier: /posts/{id}
ตัวอย่าง Endpoint:
- GET /posts: ดึงข้อมูล Blog Posts ทั้งหมด
- GET /posts/123: ดึงข้อมูล Blog Post ที่มี ID เท่ากับ 123
- POST /posts: สร้าง Blog Post ใหม่
- PUT /posts/123: แก้ไข Blog Post ที่มี ID เท่ากับ 123
- DELETE /posts/123: ลบ Blog Post ที่มี ID เท่ากับ 123
ตัวอย่าง Request (POST /posts):
{
"title": "Hello World!",
"content": "This is my first blog post."
}
ตัวอย่าง Response (GET /posts/123):
{
"id": 123,
"title": "Hello World!",
"content": "This is my first blog post.",
"created_at": "2023-10-27T10:00:00Z",
"updated_at": "2023-10-27T10:00:00Z"
}
สังเกตว่าเราใช้ HTTP Methods (GET, POST, PUT, DELETE) เพื่อบ่งบอกถึงการกระทำที่ต้องการทำกับ Resource
ข้อดีของ REST
การใช้ REST ในการพัฒนา API มีข้อดีมากมาย:
- Simple and Easy to Understand: หลักการง่ายๆ ทำให้ผู้พัฒนาเข้าใจได้ง่าย
- Scalable: รองรับผู้ใช้งานจำนวนมาก
- Flexible: สามารถใช้กับภาษาโปรแกรมและ Platform ได้หลากหลาย
- Standardized: ใช้มาตรฐาน HTTP ทำให้ทำงานร่วมกับระบบอื่นๆ ได้ง่าย
- Cacheable: ช่วยลดภาระของ Server และเพิ่มความเร็วในการตอบสนอง
สรุป
REST เป็นสถาปัตยกรรมที่ได้รับความนิยมอย่างมากในการพัฒนา Web API เพราะมีความเรียบง่าย ยืดหยุ่น และมีประสิทธิภาพ การเข้าใจหลักการของ REST จะช่วยให้คุณออกแบบ API ที่ดีและง่ายต่อการบำรุงรักษา
ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ HTTP Methods ซึ่งเป็นส่วนสำคัญในการสร้าง RESTful API