REST API คือวิธีที่แอปพลิเคชันต่าง ๆ "คุยกัน" ผ่านอินเทอร์เน็ต เช่น แอปมือถือดึงข้อมูลจากเซิร์ฟเวอร์ หรือเว็บเชื่อมต่อบริการภายนอก บทความนี้จะอธิบายแนวคิด REST API ให้เข้าใจง่ายพร้อมตัวอย่างจริง ═══════════════════════════════════════ 📌 1. API และ REST คืออะไร ═══════════════════════════════════════ API (Application Programming Interface) = ช่องทางให้โปรแกรมคุยกัน เปรียบเหมือน "พนักงานเสิร์ฟ" ที่รับคำสั่งจากลูกค้า (แอป) ไปบอกครัว (เซิร์ฟเวอร์) แล้วนำอาหาร (ข้อมูล) กลับมาให้ REST = รูปแบบการออกแบบ API ที่นิยมที่สุด ใช้ HTTP เป็นพื้นฐาน โดยมองทุกอย่างเป็น "Resource" (ทรัพยากร) เช่น users, products จุดเด่นของ REST: • ใช้ HTTP Methods สื่อความหมายชัดเจน • รับส่งข้อมูลด้วย JSON (อ่านง่าย) • Stateless (แต่ละคำขอเป็นอิสระ ไม่จำสถานะ) ═══════════════════════════════════════ 🔧 2. HTTP Methods — กริยาของ API ═══════════════════════════════════════ แต่ละ method บอก "การกระทำ" ที่ต้องการ • GET → อ่าน/ดึงข้อมูล (เช่น ดูรายชื่อผู้ใช้) • POST → สร้างข้อมูลใหม่ (เช่น เพิ่มผู้ใช้) • PUT → แก้ไข/แทนที่ข้อมูล (เช่น อัปเดตผู้ใช้) • PATCH → แก้ไขบางส่วน • DELETE → ลบข้อมูล (เช่น ลบผู้ใช้) สังเกตว่าตรงกับ CRUD: POST=Create, GET=Read, PUT=Update, DELETE=Delete ═══════════════════════════════════════ 🔗 3. Endpoint และ Resource ═══════════════════════════════════════ Endpoint = URL ที่ใช้เข้าถึง Resource ```bash GET /api/users # ดึงผู้ใช้ทั้งหมด GET /api/users/5 # ดึงผู้ใช้ id=5 POST /api/users # สร้างผู้ใช้ใหม่ PUT /api/users/5 # แก้ไขผู้ใช้ id=5 DELETE /api/users/5 # ลบผู้ใช้ id=5 ``` *** หลักการตั้งชื่อ: ใช้คำนาม พหูพจน์ (users, products) ไม่ใช่กริยา *** ═══════════════════════════════════════ 📦 4. JSON — รูปแบบข้อมูลมาตรฐาน ═══════════════════════════════════════ REST API รับส่งข้อมูลด้วย JSON (JavaScript Object Notation) ```json { "id": 5, "name": "สมชาย ใจดี", "email": "somchai@mail.com", "roles": ["admin", "editor"], "active": true } ``` โครงสร้าง JSON: • { } = object (กลุ่มคีย์-ค่า) • [ ] = array (รายการ) • คีย์ต้องอยู่ใน "..." และคั่นด้วย : ═══════════════════════════════════════ 🚦 5. HTTP Status Codes — รหัสสถานะ ═══════════════════════════════════════ เซิร์ฟเวอร์ตอบกลับพร้อมรหัสบอกผลลัพธ์ • 200 OK → สำเร็จ • 201 Created → สร้างสำเร็จ • 204 No Content → สำเร็จ (ไม่มีข้อมูลกลับ เช่นหลังลบ) • 400 Bad Request → คำขอผิดรูปแบบ • 401 Unauthorized → ยังไม่ล็อกอิน/ไม่มีสิทธิ์ • 404 Not Found → ไม่พบข้อมูล • 500 Server Error → เซิร์ฟเวอร์มีปัญหา จำง่าย: 2xx=สำเร็จ, 4xx=ผิดที่ผู้ใช้, 5xx=ผิดที่เซิร์ฟเวอร์ ═══════════════════════════════════════ 📤 6. ตัวอย่าง Request และ Response ═══════════════════════════════════════ เรียก API ด้วย curl (ดึงข้อมูล): ```bash # GET ดึงผู้ใช้ทั้งหมด curl https://api.example.com/api/users # POST สร้างผู้ใช้ใหม่ (ส่ง JSON) curl -X POST https://api.example.com/api/users \ -H "Content-Type: application/json" \ -d '{"name":"สมหญิง","email":"somying@mail.com"}' ``` สิ่งที่เซิร์ฟเวอร์ตอบกลับ (Response): ```json { "status": "success", "data": { "id": 6, "name": "สมหญิง", "email": "somying@mail.com" } } ``` ═══════════════════════════════════════ 🛠️ 7. สร้าง REST API ด้วย Laravel (ตัวอย่าง) ═══════════════════════════════════════ ```php <?php // routes/api.php — สร้าง endpoint ทั้งชุดด้วยบรรทัดเดียว use App\Http\Controllers\UserController; Route::apiResource('users', UserController::class); ``` ```php <?php // UserController — คืนข้อมูลเป็น JSON public function index() { return response()->json(User::all()); } public function store(Request $request) { $user = User::create($request->all()); return response()->json($user, 201); } ``` ═══════════════════════════════════════ ✅ 8. Best Practices และสรุป ═══════════════════════════════════════ • ตั้งชื่อ endpoint เป็นคำนามพหูพจน์ (/users ไม่ใช่ /getUsers) • ใช้ HTTP Method ให้ถูกความหมาย (GET อ่าน, POST สร้าง) • คืน Status Code ที่เหมาะสมเสมอ • ใช้ JSON และโครงสร้าง response ที่สม่ำเสมอ • ป้องกันด้วย Authentication (เช่น Token/API Key) สำหรับข้อมูลสำคัญ • จัดการ error พร้อมข้อความที่ชัดเจน เส้นทางต่อไป: เรียนรู้ Authentication (JWT/Sanctum), Pagination, Rate Limiting และการทำเอกสาร API (Swagger/Postman) จำไว้: REST API คือสะพานเชื่อมทุกแพลตฟอร์ม — เว็บ มือถือ และบริการอื่น ๆ เข้าใจ REST = ต่อยอดได้ทั้งระบบ 🔌