แจกโค้ดสำเร็จรูป! สอน PHP เรียกใช้ API แบบจับมือทำ: ก็อปไปวางปุ๊บ ข้อมูลมาปั๊บ (ฉบับครูสาย Dev)

หลังจากที่เราเข้าใจแล้วว่า 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 บรรทัดจบ)

  1. curl_init() และ curl_exec(): คือการสั่งให้ PHP วิ่งไปเคาะประตูบ้านเว็บไซต์อื่น เพื่อขอข้อมูลมา
  2. json_decode($response, true): คือพระเอกตัวจริง! เพราะข้อมูลที่ได้มาจะเป็น Text ยาวๆ (JSON) ฟังก์ชันนี้จะแปลงมันเป็น Array ให้เราเอาไปใช้งานต่อได้ง่ายๆ (เช่น $data['name'])
  3. echo: ก็คือการนำตัวแปร PHP มาแสดงผล HTML ตามปกติเลยค่ะ

การนำไปประยุกต์ใช้จริงในโรงเรียน

คุณครูสามารถเปลี่ยนตัวแปร $api_url เป็น URL ของระบบภายในโรงเรียนได้ เช่น:

  • ระบบตรวจสอบสิทธิ์: ยิง API ไปเช็คว่าเลขบัตรประชาชนนี้ เป็นนักเรียนปัจจุบันหรือไม่
  • ระบบเกรด: ยิง API ไปดึงเกรดเฉลี่ย (GPA) มาแสดงในระบบสมัครโควตา

บทสรุป

เห็นไหมคะว่าการเชื่อมต่อ API ไม่ได้น่ากลัวอย่างที่คิด หัวใจสำคัญมีแค่ “ยิงไป (curl)” และ “แปลงค่า (json_decode)” เท่านั้นเองค่ะ พอทำได้ครั้งหนึ่งแล้ว โลกการพัฒนาเว็บของคุณครูจะกว้างขึ้นมหาศาลเลยค่ะ!

Scroll to Top