บทความนี้สอนเขียน PHP ดึงข้อมูลจาก API เพื่อมาแสดงผลที่หน้าเว็บไซต์ เราจะได้เรียนรู้การใช้คำสั่ง file_get_contents และ curl สำหรับดึงข้อมูลจาก API ที่ต้องการ และใช้คำสั่ง json_decode แปลงข้อมูลที่ได้รับจาก API ไปเป็นข้อมูลที่ PHP สามารถนำไปใช้งานต่อได้ โดยมีรายละเอียดดังนี้
ตัวอย่าง สมมุติ API มีโค้ดดังนี้
<?php
$data = array(
array('id' => 1, 'name' => 'computer'),
array('id' => 2, 'name' => 'notebook'),
array('id' => 3, 'name' => 'mobile phone')
);
$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo $json;
?>
ผลลัพธ์
[
{ "id": 1, "name": "computer" },
{ "id": 2, "name": "notebook" },
{ "id": 3, "name": "mobile phone" }
]
API นี้ให้บริการดึงข้อมูลในรูปแบบของ JSON ทั้งหมด 3 ข้อมูล สมมุติ URL ที่ให้บริการคือ localhost:8000 สามารถใช้คำสั่ง file_get_contents และ curl เพื่อดึงข้อมูลจาก API นี้ ได้ดังนี้
ตัวอย่าง PHP ดึงข้อมูลจาก API ด้วย file_get_contents
<?php
$url = "http://localhost:8000";
$json = file_get_contents($url);
$data = json_decode($json, true);
var_dump($data);
?>
จากตัวอย่างใช้คำสั่ง file_get_contents ดึงข้อมูลจาก API โดยเก็บค่า JSON ที่ได้รับไว้ที่ตัวแปร $json จากนั้นใช้คำสั่ง json_decode แปลงข้อมูล JSON เป็นข้อมูลที่ PHP สามารถนำไปใช้งานต่อได้
ตัวอย่าง PHP ดึงข้อมูลจาก API ด้วย curl
<?php
$url = "http://localhost:8000";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$data = json_decode($result, true);
var_dump($data);
?>
จากตัวอย่างใช้คำสั่งในกลุ่ม curl เพื่อดึงข้อมูลจาก API localhost:8000 เมื่อได้ข้อมูลในรูปแบบ JSON แล้วให้ใช้คำสั่ง json_decode แปลงเป็นข้อมูลที่ PHP สามารถนำไปใช้งานต่อได้