คอมพิวเตอร์และอินเตอร์เน็ต,บรรยายวิชาการ,วิจัย,ศึกษากุรอาน,E-Book

วันพฤหัสบดีที่ 10 มิถุนายน พ.ศ. 2564

REST API ทดสอบแล้ว

 


ได้ทดสอบเขียน 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/  */

ไม่มีความคิดเห็น: