ทำความเข้าใจ 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)