หลังจากที่เราเข้าใจแล้วว่า API คือ “บริกร” ที่คอยส่งอาหาร (ข้อมูล) วันนี้เราจะมาเข้าครัวลงมือเขียนโค้ด PHP เพื่อเรียกใช้งานบริกรคนนี้กันค่ะ
ในวงการ PHP วิธีที่นิยมและเป็นมาตรฐานที่สุดในการคุยกับ API คือการใช้ฟังก์ชันที่ชื่อว่า cURL (Client URL) ค่ะ ฟังดูชื่อยาก แต่จริงๆ แล้วสเต็ปการทำงานมีแค่ 3 ขั้นตอน: “โทรออก -> รับสาย -> แปลภาษา”
เรามาดูโค้ดจริงกันเลยค่ะ!
โจทย์: ดึงข้อมูล “บุคคลสมมติ” จาก API สาธารณะ
เพื่อให้เห็นภาพ ดิฉันจะพาคุณครูทดลองดึงข้อมูลจากเว็บ randomuser.me (ซึ่งเป็น API ฟรีสำหรับทดสอบระบบ) มาแสดงผลบนหน้าเว็บของเราค่ะ
ตัวอย่างโค้ด (Copy ไปวางในไฟล์ test_api.php ได้เลยค่ะ)
PHP
<?php
// 1. ตั้งค่า: ระบุ URL ของ API ที่เราต้องการคุยด้วย
// (ในสถานการณ์จริง ตรงนี้จะเป็น URL ระบบทะเบียนของโรงเรียนค่ะ)
$api_url = "https://randomuser.me/api/";
// 2. เริ่มต้นใช้งาน cURL (เหมือนหยิบโทรศัพท์ขึ้นมา)
$ch = curl_init();
// ตั้งค่าต่างๆ
curl_setopt($ch, CURLOPT_URL, $api_url); // โทรไปที่เบอร์นี้นะ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // รับค่ากลับมาเป็นข้อความ (ไม่ต้องปริ้นเลย)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // (เฉพาะ localhost) ข้ามการเช็ค SSL เพื่อป้องกัน Error
// 3. ส่งคำสั่งยิงออกไป! (Execute)
$response = curl_exec($ch);
// ตรวจสอบว่ามี Error หรือไม่
if(curl_errno($ch)){
echo 'เกิดข้อผิดพลาด Request Error:' . curl_error($ch);
}
// วางสาย (ปิดการเชื่อมต่อ)
curl_close($ch);
// ---------------------------------------------------------
// 4. แปลงร่างข้อมูล (Decode)
// ข้อมูลที่ได้มาจะเป็น JSON (ข้อความยาวๆ) เราต้องแปลงเป็น Array ของ PHP ก่อน
$data = json_decode($response, true);
// ลองสั่งปริ้นดูโครงสร้างข้อมูลทั้งหมด (เพื่อดูว่ามีตัวแปรอะไรให้ใช้บ้าง)
// echo "<pre>"; print_r($data); echo "</pre>";
// ---------------------------------------------------------
// 5. นำข้อมูลมาแสดงผลสวยๆ
// สมมติ API นี้ส่งข้อมูลกลับมาในรูปแบบ Array ซ้อน Array
$user = $data['results'][0];
$name = $user['name']['first'] . " " . $user['name']['last'];
$email = $user['email'];
$image = $user['picture']['large'];
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>ทดสอบ API</title>
<style>
body { font-family: 'Sarabun', sans-serif; text-align: center; padding: 50px; }
.card { border: 1px solid #ddd; padding: 20px; border-radius: 10px; display: inline-block; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
img { border-radius: 50%; }
h2 { color: #2c3e50; }
</style>
</head>
<body>
<div class="card">
<img src="<?php echo $image; ?>" alt="User Image">
<h2>สวัสดี: <?php echo $name; ?></h2>
<p>อีเมล: <?php echo $email; ?></p>
<p style="color: green;">(ข้อมูลนี้ดึงมาจาก API อัตโนมัติ)</p>
</div>
</body>
</html>
อธิบายโค้ดแบบบ้านๆ (3 บรรทัดจบ)
curl_init()และcurl_exec(): คือการสั่งให้ PHP วิ่งไปเคาะประตูบ้านเว็บไซต์อื่น เพื่อขอข้อมูลมาjson_decode($response, true): คือพระเอกตัวจริง! เพราะข้อมูลที่ได้มาจะเป็น Text ยาวๆ (JSON) ฟังก์ชันนี้จะแปลงมันเป็น Array ให้เราเอาไปใช้งานต่อได้ง่ายๆ (เช่น$data['name'])echo: ก็คือการนำตัวแปร PHP มาแสดงผล HTML ตามปกติเลยค่ะ
การนำไปประยุกต์ใช้จริงในโรงเรียน
คุณครูสามารถเปลี่ยนตัวแปร $api_url เป็น URL ของระบบภายในโรงเรียนได้ เช่น:
- ระบบตรวจสอบสิทธิ์: ยิง API ไปเช็คว่าเลขบัตรประชาชนนี้ เป็นนักเรียนปัจจุบันหรือไม่
- ระบบเกรด: ยิง API ไปดึงเกรดเฉลี่ย (GPA) มาแสดงในระบบสมัครโควตา
บทสรุป
เห็นไหมคะว่าการเชื่อมต่อ API ไม่ได้น่ากลัวอย่างที่คิด หัวใจสำคัญมีแค่ “ยิงไป (curl)” และ “แปลงค่า (json_decode)” เท่านั้นเองค่ะ พอทำได้ครั้งหนึ่งแล้ว โลกการพัฒนาเว็บของคุณครูจะกว้างขึ้นมหาศาลเลยค่ะ!



