วิธีการใช้งาน PHP curl (Postman)

สวัสดีครับ หลายๆ คนคงเคยได้ ยินคำว่า curl ในภาษา php วันนี้เราจะมาลองใช้ งานมันดูกันนะครับ สมมุติว่าเราต้องดึงข้อมูล Api ระหว่าง server 2 ตัว เราจะทำยังไง ?

Curl สามารถช่วยแก้ปัญหาได้ โดยตัวมันสร้างสามารถสร้าง request RestFul  โดยขั้นตอนการทำงานแบบง่ายคือ

  • curl_init() เพื่อเปิดการทำงาน
  • curl_setopt ( resource $ch , int $option , mixed $value ) เพื่อใส่ option ต่างๆ สำหรับ method post สิ่งที่จำเป็น ก็คือ CURLOPT_URL (url ของ api ที่เราต้องการไปเรียก) , CURLOPT_POSTFIELDS (ข้อมูลที่เราต้องการจะส่งไป) และ CURLOPT_POST (เซตให้เป็น true)
  • curl_exec ( resource $ch ) เพื่อสั่งให้ curl ทำงานคล้ายๆ การกดปุ่ม submit ใน form ที่ client
  • curl_close ( resource $ch ) สุดท้ายคือการสั่งปิดการทำงาน

ด้านล่างคือ source code ที่ใช้สำหรับ ทดสอบโปรแกรม

TestApi.php สร้าง curl สำหรับเรียกใช้งาน

<?php
  $url = 'http://localhost:81/Api/RestfulApi.php'; 
  
  $data = "fn=login&test=1";
  
  /*$data = array(
        'fn' => "login" 
    );*/
  
  
  try{
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    $content = curl_exec( $ch );
    curl_close($ch);
    
    print_r($content);
    
  }catch(Exception $ex){
  
    echo $ex;
  }
    
?>

RestfulApi.php Api ที่เราต้องการเรียกใช้งาน

<?php  

$server = isset($_SERVER['HTTP_HOST'])?isset($_SERVER['HTTP_HOST']):"";
$reqFunction = isset($_POST['fn'])?$_POST['fn']:""; 
$raw  =  isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA  : " POST_DATA  is  null  ";

try{
  switch($reqFunction)
  {
    case 'login';
      $result['status'] = true;
      $result['message'] = "login success" . " test : " . $_POST['test'];
    break;
    default;
      $result['status'] = false;
      $result['message'] = " Unknow command " . $reqFunction. $raw;
    break;
  }
}catch(Exception $ex){
  $result['status'] = false;
  $result['message'] = "exception: ".$ex;
}
    
 echo json_encode($result, JSON_UNESCAPED_UNICODE);

?>

สุดท้ายการสร้าง curl บางครั้งอาจดูยุ่งยาก เพราะต้องกำหนด parameter ต่างๆ ซึ่งมีทั้ง header และ body บางทีก็เขียนผิดเขียน ถูก วันนี้เลยขอแน่ะนำ tools เพื่อใช้ในการเขียน curl ที่เป็น extension ใน chrome ชื่อ postman

จากรูปและในวีดีโอจะเห็นได้ ว่า postman สามารถสร้าง source code ออกมาให้ เราได้เลย ทำให้สะดวกต่อการ ทดสอบ และการเขียนโปรแกรมเพื่อทดสอบการทำงาน ของ api ได้อย่างรวดเร็ว ลองดูนะครับ ผมว่ามีประโยชน์เลยทีเดียว