跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

การส่งค่า Parameter ผ่าน URL (GET)

บทนี้อธิบายถึงการส่งค่า Parameter ผ่าน URL โดยใช้ HTTP Method `GET` และการเข้าถึงค่าเหล่านั้นใน PHP ผ่านตัวแปร Superglobal `$_GET` ซึ่งเป็น Array ที่เก็บ Key-Va...

การส่งค่า Parameter ผ่าน URL (GET)

ในบทที่แล้ว เราได้สร้าง API อย่างง่ายที่ส่งข้อความ "Hello, API World!" กลับไป ในบทนี้ เราจะเรียนรู้วิธีการส่งค่าจาก Client มายัง API ของเราผ่านทาง URL โดยใช้สิ่งที่เรียกว่า "Parameter" และวิธีการเข้าถึง Parameter เหล่านั้นใน PHP โดยใช้ `$_GET`

Parameter คืออะไร?

Parameter คือข้อมูลเพิ่มเติมที่เราส่งไปพร้อมกับ URL เพื่อบอกให้ API รู้ว่าเราต้องการอะไร หรือต้องการข้อมูลอะไร ตัวอย่างเช่น ถ้าเราต้องการดึงข้อมูลผู้ใช้ที่มี ID เท่ากับ 1 เราอาจจะส่ง ID นั้นเป็น Parameter ใน URL ดังนี้:

http://example.com/api/users?id=1

ใน URL นี้ id=1 คือ Parameter โดยที่ id คือชื่อของ Parameter และ 1 คือค่าของ Parameter เราสามารถส่ง Parameter ได้หลายตัวโดยคั่นด้วยเครื่องหมาย & เช่น:

http://example.com/api/products?category=electronics&price=100

ใน URL นี้ เราส่ง Parameter สองตัวคือ category ที่มีค่าเป็น electronics และ price ที่มีค่าเป็น 100

HTTP Method GET คืออะไร?

ก่อนที่เราจะไปต่อ เรามาทบทวนเรื่อง HTTP Method กันสักเล็กน้อย ในบทที่ 3 เราได้กล่าวถึง HTTP Methods ต่างๆ ซึ่ง `GET` เป็นหนึ่งในนั้น และเป็น Method ที่เราจะใช้ในการส่ง Parameter ผ่าน URL

GET Method ใช้สำหรับดึงข้อมูลจาก Server โดยปกติแล้ว การส่ง Parameter ผ่าน URL จะใช้กับ `GET` Method เนื่องจาก `GET` Method ถูกออกแบบมาให้ใช้ในการดึงข้อมูลโดยระบุเงื่อนไขผ่าน Parameter ใน URL

การใช้ $_GET ใน PHP

ใน PHP เราสามารถเข้าถึง Parameter ที่ส่งมาผ่าน URL ได้โดยใช้ตัวแปร Superglobal ที่ชื่อว่า $_GET ซึ่งเป็น Array ที่เก็บ Parameter ทั้งหมดในรูปแบบของ Key-Value Pair โดยที่ Key คือชื่อของ Parameter และ Value คือค่าของ Parameter

ตัวอย่างเช่น ถ้าเรามี URL ดังนี้:

http://example.com/api/users?name=John&age=30

ใน PHP เราสามารถเข้าถึงค่าของ Parameter name และ age ได้ดังนี้:

<?php

$name = $_GET['name'];
$age = $_GET['age'];

echo "Name: " . $name . "<br>";
echo "Age: " . $age . "<br>";

?>

เมื่อรัน Code นี้ จะได้ผลลัพธ์ดังนี้:

Name: John<br>Age: 30

การตรวจสอบค่า Parameter

สิ่งสำคัญที่ต้องทำก่อนที่จะนำค่า Parameter ไปใช้คือการตรวจสอบว่า Parameter นั้นมีอยู่จริงหรือไม่ และมีค่าที่ถูกต้องหรือไม่ เพราะถ้าเราพยายามเข้าถึง Parameter ที่ไม่มีอยู่ จะทำให้เกิด Error ได้

เราสามารถตรวจสอบว่า Parameter มีอยู่จริงหรือไม่โดยใช้ฟังก์ชัน isset() ใน PHP:

<?php

if (isset($_GET['name'])) {
  $name = $_GET['name'];
  echo "Name: " . $name . "<br>";
} else {
  echo "Name parameter is missing.<br>";
}

?>

Code นี้จะตรวจสอบว่า Parameter name มีอยู่หรือไม่ ถ้ามีอยู่ ก็จะแสดงค่าของ name ถ้าไม่มีอยู่ ก็จะแสดงข้อความว่า "Name parameter is missing."

นอกจากนี้ เรายังควรตรวจสอบว่าค่าของ Parameter นั้นถูกต้องตามที่เราต้องการหรือไม่ ตัวอย่างเช่น ถ้าเราต้องการให้ Parameter age เป็นตัวเลข เราสามารถตรวจสอบได้ดังนี้:

<?php

if (isset($_GET['age']) && is_numeric($_GET['age'])) {
  $age = $_GET['age'];
  echo "Age: " . $age . "<br>";
} else {
  echo "Age parameter is missing or invalid.<br>";
}

?>

Code นี้จะตรวจสอบว่า Parameter age มีอยู่หรือไม่ และเป็นตัวเลขหรือไม่ ถ้ามีอยู่และเป็นตัวเลข ก็จะแสดงค่าของ age ถ้าไม่มีอยู่ หรือไม่เป็นตัวเลข ก็จะแสดงข้อความว่า "Age parameter is missing or invalid."

ตัวอย่างการใช้งานจริง: API ดึงข้อมูลผู้ใช้

ลองมาดูตัวอย่างการใช้งานจริงในการสร้าง API ที่ดึงข้อมูลผู้ใช้ตาม ID ที่ส่งมาผ่าน URL

สมมติว่าเรามีข้อมูลผู้ใช้เก็บอยู่ใน Array ดังนี้:

<?php

$users = [
  1 => ['name' => 'John', 'age' => 30],
  2 => ['name' => 'Jane', 'age' => 25],
  3 => ['name' => 'Peter', 'age' => 40]
];

?>

เราสามารถสร้าง API ที่ดึงข้อมูลผู้ใช้ตาม ID ได้ดังนี้:

<?php

$users = [
  1 => ['name' => 'John', 'age' => 30],
  2 => ['name' => 'Jane', 'age' => 25],
  3 => ['name' => 'Peter', 'age' => 40]
];

header('Content-Type: application/json'); // บอก Client ว่าเราจะส่ง JSON กลับไป

if (isset($_GET['id']) && is_numeric($_GET['id'])) {
  $id = $_GET['id'];

  if (isset($users[$id])) {
    $user = $users[$id];
    $response = ['status' => 'success', 'data' => $user];
  } else {
    $response = ['status' => 'error', 'message' => 'User not found.'];
  }
} else {
  $response = ['status' => 'error', 'message' => 'Invalid user ID.'];
}

echo json_encode($response);

?>

Code นี้จะทำงานดังนี้:

  1. กำหนด Array $users ที่เก็บข้อมูลผู้ใช้
  2. ตั้งค่า Header เป็น application/json เพื่อบอก Client ว่าเราจะส่ง JSON กลับไป
  3. ตรวจสอบว่า Parameter id มีอยู่หรือไม่ และเป็นตัวเลขหรือไม่
  4. ถ้า id มีอยู่และเป็นตัวเลข จะตรวจสอบว่ามีผู้ใช้ที่มี ID ตรงกับ $id หรือไม่
  5. ถ้ามีผู้ใช้ที่มี ID ตรงกับ $id จะสร้าง Array $response ที่มี status เป็น success และ data เป็นข้อมูลของผู้ใช้
  6. ถ้าไม่มีผู้ใช้ที่มี ID ตรงกับ $id จะสร้าง Array $response ที่มี status เป็น error และ message เป็น "User not found."
  7. ถ้า id ไม่มีอยู่ หรือไม่เป็นตัวเลข จะสร้าง Array $response ที่มี status เป็น error และ message เป็น "Invalid user ID."
  8. แปลง Array $response เป็น JSON String ด้วยฟังก์ชัน json_encode()
  9. ส่ง JSON String กลับไป

ถ้าเราเรียก API นี้ด้วย URL http://example.com/api/users?id=1 จะได้ผลลัพธ์เป็น JSON ดังนี้:

{
  "status": "success",
  "data": {
    "name": "John",
    "age": 30
  }
}

ถ้าเราเรียก API นี้ด้วย URL http://example.com/api/users?id=4 จะได้ผลลัพธ์เป็น JSON ดังนี้:

{
  "status": "error",
  "message": "User not found."
}

ถ้าเราเรียก API นี้ด้วย URL http://example.com/api/users?id=abc จะได้ผลลัพธ์เป็น JSON ดังนี้:

{
  "status": "error",
  "message": "Invalid user ID."
}

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการส่งค่า Parameter ผ่าน URL โดยใช้ `GET` Method และวิธีการเข้าถึง Parameter เหล่านั้นใน PHP โดยใช้ $_GET นอกจากนี้ เรายังได้เรียนรู้วิธีการตรวจสอบค่า Parameter เพื่อป้องกัน Error และวิธีการนำไปประยุกต์ใช้ในการสร้าง API ที่ดึงข้อมูลผู้ใช้ตาม ID

ในบทต่อไป เราจะเรียนรู้วิธีการรับข้อมูลจาก Form โดยใช้ `POST` Method ซึ่งเป็นอีกวิธีหนึ่งในการส่งข้อมูลจาก Client มายัง API ของเรา

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务