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 = ต่อยอดได้ทั้งระบบ 🔌