JSON ย่อมาจาก JavaScript Object Notation เป็นอีกหนึ่งรูปแบบภาษาที่ใช้ในการแลกเปลี่ยนข้อมูลข้ามแพลตฟอร์ม ซึ่งเป็นข้อมูลประเภทสตริงที่มีรูปแบบข้อมูลคล้ายกับอาร์เรย์ JSON สามารถใช้งานร่วมกับ Web Service แบบ REST ได้เป็นอย่างดี จึงได้รับความนิยมมากในการใช้แลกเปลี่ยนข้อมูล ในหัวข้อนี้จะได้กล่าวถึงการใช้ PHP เพื่อพัฒนา REST Web Service โดยใช้ JSON เป็นรูปแบบในการแลกเปลี่ยนข้อมูล
การสร้างบริการบนฝั่งเซิร์ฟเวอร์
การพัฒนา PHP เพื่อให้บริการเว็บเซอร์วิสแบบ REST นั้น สามารถทำได้โดยประกาศส่วนหัว (Header) ของเอกสารให้เป็นประเภท JSON และส่งคืนค่าเจซันออบเจ็กต์หรือเจซันอาร์เรย์ ก็สามารถเปิดให้บริการได้แล้ว ดังขั้นตอนต่อไปนี้
- สร้างไฟล์ PHP ตั้งชื่อว่า getAllProducts.php ในตัวอย่างนี้ จะพัฒนา Web Service เพื่อติดต่อขอข้อมูลสินค้าจากฐานข้อมูล MySQL
- ประกาศให้เอกสารนี้สามารถเข้าถึงได้จากทุกแหล่ง และประกาศหัว (header) ของเอกสารให้เป็นประเภท JSON
|
<?php
header("Access-Control-Allow-Origin: *");
header('Content-type: application/json', true);
?>
|
2. ติดต่อฐานข้อมูล MySQL เลือกฐานข้อมูลชื่อ shop
|
<?php
header("Access-Control-Allow-Origin: *");
header("Content-type: application/json", true);
$connect = mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("shop") or die (mysql_error());
mysql_query("SET NAMES utf8");
?>
|
3. สร้างตัวแปรประเภทอาร์เรย์ ตั้งชื่อว่า $json_return เพื่อเก็บผลลัพธ์จากการสืบค้นจากฐานข้อมูล
|
<?php
header("Access-Control-Allow-Origin: *");
header("Content-type: application/json", true);
$connect = mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("shop") or die (mysql_error());
mysql_query("SET NAMES utf8");
$json_return = array();
?>
|
4. ใช้คำสั่งสืบค้น และเก็บค่าจากการสืบค้นไว้ในตัวแปร $json_return ที่สร้างไว้โดยใช้คำสั่ง array_push
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
header("Access-Control-Allow-Origin: *");
header("Content-type: application/json", true);
$connect = mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("shop") or die (mysql_error());
mysql_query("SET NAMES utf8");
$json_return = array();
$query = mysql_query("SELECT * FROM product WHERE product_id='$pid'");
while ($row = mysql_fetch_assoc($query)) {
array_push($json_return,
array(
"product_name" => $row["product_name"],
"product_price" => $row["product_price"],
"product_detail" => $row["product_detail"],
"product_img" => $row["product_img"]
)
);
}
?>
|
ในการวนลูปเพื่อดึงค่าตัวแปรออกมานั้น แนะนำให้ใช้คำสั่ง mysql_fetch_assoc
5. ใช้คำสั่ง json_encode เพื่อแปลงอาร์เรย์ให้กลายเป็นข้อมูลประเภท JSON เป็นอันเสร็จสิ้นขั้นตอนการพัฒนา REST Web Service แบบ JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php
header("Access-Control-Allow-Origin: *");
header("Content-type: application/json", true);
$connect = mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("shop") or die (mysql_error());
mysql_query("SET NAMES utf8");
$json_return = array();
$query = mysql_query("SELECT * FROM product");
while ($row = mysql_fetch_assoc($query)) {
array_push($json_return,
array(
"product_name" => $row["product_name"],
"product_price" => $row["product_price"],
"product_detail" => $row["product_detail"],
"product_img" => $row["product_img"]
)
);
}
echo json_encode($json_return);
?>
|
ทดสอบการทำงานของ Web Service
1. ใช้ Browser เปิด url ในตัวอย่างนี้ url ของ Web Service อยู่ที่ http://www.webbookthai.com/shop/getAllProducts.php
2. จะพบว่า ข้อมูลที่ส่งกลับมาจะอยู่ในรูปแบบ JSON
3. สามารถนำข้อมูล JSON นี้ ไปดูโครงสร้างได้โดยใช้เว็บไซต์ที่ให้บริการอ่านโครงสร้างข้อมูล JSON ในที่นี้แนะนำให้ใช้เว็บไซต์ http://jsonviewer.stack.hu/ จะพบว่า ข้อมูลที่ส่งกลับมาประกอบไปด้วย 4 เรคคอร์ด แต่ละเรคคอร์ดประกอบไปด้วย 4 คอลัมน์ ดังนี้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น