ทำความเข้าใจ REST APIs
REST APIs เป็นกระดูกสันหลังของแอปพลิเคชันเว็บสมัยใหม่ — เรียนรู้วิธีการทำงาน, HTTP Methods, Status Codes และหลักการออกแบบ
REST คืออะไร?
// REST = Representational State Transfer // เป็นรูปแบบ (Architecture) สำหรับการสื่อสารระหว่างระบบผ่าน HTTP Client ──── HTTP Request ────▶ Server Client ◀─── JSON Response ──── Server
การทำงานของ REST API
1. Client ส่ง Request
เบราว์เซอร์หรือแอปส่งคำขอไปยัง URL
2. Server ประมวลผล
รับ request, เข้าถึง database
3. ส่ง Response กลับ
ส่งข้อมูล JSON + Status Code
HTTP Methods หลัก (CRUD)
GET ดึงข้อมูล อ่านข้อมูลจาก server ไม่แก้ไขข้อมูลใดๆ
POST สร้างข้อมูลใหม่ ส่งข้อมูลเพื่อสร้าง resource ใหม่
PUT แทนที่ข้อมูล อัปเดตทั้งหมดของ resource ที่มีอยู่
PATCH แก้ไขบางส่วน อัปเดตเฉพาะบางฟิลด์ของ resource
DELETE ลบข้อมูล ลบ resource ที่ระบุออกจาก server
ตัวอย่าง API Endpoint จริง
# จัดการข้อมูลผู้ใช้ GET /api/users → ดึงรายชื่อผู้ใช้ทั้งหมด GET /api/users/42 → ดึงข้อมูลผู้ใช้ ID 42 POST /api/users → สร้างผู้ใช้ใหม่ PUT /api/users/42 → อัปเดตข้อมูลผู้ใช้ 42 ทั้งหมด PATCH /api/users/42 → แก้ไขบางฟิลด์ของผู้ใช้ 42 DELETE /api/users/42 → ลบผู้ใช้ 42
HTTP Status Codes ที่สำคัญ
200 OK สำเร็จ — ได้รับข้อมูล
201 Created สร้างข้อมูลใหม่สำเร็จ
204 No Content ลบสำเร็จ ไม่มีข้อมูลส่งกลับ
301 Moved Permanently URL ย้ายถาวรไป URL ใหม่
400 Bad Request ข้อมูลที่ส่งมาไม่ถูกต้อง
401 Unauthorized ยังไม่ได้ล็อกอิน
403 Forbidden ไม่มีสิทธิ์เข้าถึง
404 Not Found ไม่พบข้อมูลที่ต้องการ
500 Internal Server Error เกิดข้อผิดพลาดที่ server
ตัวอย่าง JSON Response
// GET /api/users/42 → 200 OK
{
"id": 42,
"name": "สมชาย ใจดี",
"email": "somchai@example.com",
"role": "developer",
"createdAt": "2026-01-15T09:00:00Z"
}
6 หลักการของ REST (REST Constraints)
1. Client-Server
แยก UI ออกจาก logic ฝั่ง server ชัดเจน
2. Stateless
แต่ละ request ต้องมีข้อมูลครบในตัว ไม่พึ่ง session
3. Cacheable
Response ระบุได้ว่า cache ได้หรือไม่ ลด load server
4. Layered System
Client ไม่รู้ว่าคุยกับ server จริงหรือ proxy
5. Uniform Interface
ใช้ URL และ HTTP Methods มาตรฐานสม่ำเสมอ
6. Code on Demand
Server ส่ง executable code มาได้ (optional)