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
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)
{
"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 (ดึงข้อมูล):
# 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):
{
"status": "success",
"data": {
"id": 6,
"name": "สมหญิง",
"email": "somying@mail.com"
}
}
═══════════════════════════════════════
🛠️ 7. สร้าง REST API ด้วย Laravel (ตัวอย่าง)
═══════════════════════════════════════
<?php
// routes/api.php — สร้าง endpoint ทั้งชุดด้วยบรรทัดเดียว
use App\Http\Controllers\UserController;
Route::apiResource('users', UserController::class);
<?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 = ต่อยอดได้ทั้งระบบ 🔌