ได้ทดสอบเขียน REST API โดบแบ่งเป็น 2 ส่วน(A,B) ดังนี้
////////////////A.ไฟล์สำหรับบริการข้อมูล///////////////////////////////////////
1.api_employee.php เป็นไฟล์ที่ให่บริการ Api อยู่ในServerที่มี DB
<?php
//กำหนดค่า Access-Control-Allow-Origin ให้ เครื่อง อื่น ๆ สามารถเรียกใช้งานหน้านี้ได้
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
//ตั้งค่าการเชื่อมต่อฐานข้อมูล
$link = mysqli_connect('localhost', 'root', 'testtest', 'test_db');
mysqli_set_charset($link, 'utf8');
$requestMethod = $_SERVER["REQUEST_METHOD"];
////////////////PART 1 ////////////////////
//ตรวจสอบหากใช้ Method GET
if($requestMethod == 'GET'){
//ตรวจสอบการส่งค่า id
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = $_GET['id'];
//คำสั่ง SQL กรณี มีการส่งค่า id มาให้แสดงเฉพาะข้อมูลของ id นั้น
$sql = "SELECT * FROM employees WHERE id = $id";
}else{
//คำสั่ง SQL แสดงข้อมูลทั้งหมด
$sql = "SELECT * FROM employees";
}
$result = mysqli_query($link, $sql);
//สร้างตัวแปร array สำหรับเก็บข้อมูลที่ได้
$arr = array();
while ($row = mysqli_fetch_assoc($result)) {
$arr[] = $row;
}
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
//JSON_UNESCAPED_UNICODE สำหรับแสดงข้อมูลเป็นภาษาไทย
}
//PART 2 for POST//////////////////////ADD by ADISAK
//อ่านข้อมูลที่ส่งมาแล้วเก็บไว้ที่ตัวแปร data
$data = file_get_contents("php://input");
//แปลงข้อมูลที่อ่านได้ เป็น array แล้วเก็บไว้ที่ตัวแปร result
$result = json_decode($data,true);
//ตรวจสอบการเรียกใช้งานว่าเป็น Method POST หรือไม่
if($requestMethod == 'POST'){
if(!empty($result)){
$firstName = $result['first_name'];
$lastName = $result['last_name'];
$emailAddress = $result['email_address'];
//คำสั่ง SQL สำหรับเพิ่มข้อมูลใน Database
$sql = "INSERT INTO employees (id,first_name,last_name,email_address) VALUES (NULL,'$firstName','$lastName','$emailAddress')";
$result = mysqli_query($link, $sql);
if ($result) {
echo json_encode(['status' => 'ok','message' => 'Insert Data Complete']);
} else {
echo json_encode(['status' => 'error','message' => 'Error']);
}
}
}
///////////PART 3 for PUT or Edit
//ตรวจสอบการเรียกใช้งานว่าเป็น Method PUT หรือไม่
if($requestMethod == 'PUT'){
//ตรวจสอบว่ามีการส่งค่า id มาหรือไม่
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = $_GET['id'];
$firstName = $result['first_name'];
$lastName = $result['last_name'];
$emailAddress = $result['email_address'];
//คำสั่ง SQL สำหรับแก้ไขข้อมูลใน Database โดยจะแก้ไขเฉพาะข้อมูลตามค่า id ที่ส่งมา
$sql = "UPDATE employees SET first_name = '$firstName' , last_name = '$lastName' , email_address = '$emailAddress' WHERE id = $id";
$result = mysqli_query($link, $sql);
if ($result) {
echo json_encode(['status' => 'ok','message' => 'Update Data Complete']);
} else {
echo json_encode(['status' => 'error','message' => 'Error']);
}
}
}
////////////PART 3 DELETE
//ตรวจสอบการเรียกใช้งานว่าเป็น Method DELETE หรือไม่
if($requestMethod == 'DELETE'){
//ตรวจสอบว่ามีการส่งค่า id มาหรือไม่
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = $_GET['id'];
//คำสั่ง SQL สำหรับลบข้อมูลใน Database ตามค่า id ที่ส่งมา
$sql = "DELETE FROM employees WHERE id = $id";
$result = mysqli_query($link, $sql);
if ($result) {
echo json_encode(['status' => 'ok','message' => 'Delete Data Complete']);
} else {
echo json_encode(['status' => 'error','message' => 'Error']);
}
}
}
////////////////B.ไฟล์สำหรับเรียกใช้บริการ///////////////////////////////////////
2.List.php ไฟล์สำรับเรียกใช้ สำหรับแสดงข้อมูล (อยู่ต่างServer)
<?php
$my_url="http://myreadysoft.net/apps/a/api_employee.php";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $my_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
//Adisak
echo "<br><br>";
$json_decoded = json_decode($response);
echo '<table border=1>';
foreach($json_decoded as $result){
echo '<tr>';
echo '<td>'.$result->id.'</td>';
echo '<td>'.$result->first_name.'</td>';
echo '<td>'.$result->last_name.'</td>';
echo '<td>'.$result->email_address.'</td>';
echo '</tr>';
}
echo '</table>';
echo "Data from : ".$my_url;
?>
3.Add.php ไฟล์ใช้บริการ สำหรับเพิ่มข้อมูล(อยู่ต่างServer)
<?php
$data = json_encode(array(
"first_name" => "John",
"last_name" => "Smith",
"email_address" => "smith@abc.com"
));
$my_url="http://myreadysoft.net/apps/a/api_employee.php";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $my_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
4.Edit.php ไฟล์ใช้บริการ สำหรับแก้ไขข้อมูล(อยู่ต่างServer)
<?php
$data = json_encode(array(
"first_name" => "Manuk",
"last_name" => "Pumi",
"email_address" => "pumit@abc.com"
));
$my_url="http://myreadysoft.net/apps/a/api_employee.php?id=11";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $my_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => $data
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
5.Delete.php ไฟล์ใช้บริการ สำหรับลบข้อมูล(อยู่ต่างServer)
<?php
$my_url="http://myreadysoft.net/apps/a/api_employee.php?id=11";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $my_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE"
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
/*CREDIT https://monkeywebstudio.com/basic-restful-web-api-phpmysql/ */
ไม่มีความคิดเห็น:
แสดงความคิดเห็น