Build RESTful API in PHP

less than 1 minute read

Published:

转载来源

jQuery方法

使用ajax函数生成一个请求、填充参数后发送

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
    ...
  }
})

PHP Curl方法

使用curl_setopt方法来设定好curl对象需要传递的参数,然后直接执行curl对象,详细讲解参见curl_setopt文档

$data = array("name" => "Hagrid", "age" => "36");                                                                      
$data_string = json_encode($data);       
$ch = curl_init('http://api.local/rest/users');        
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                            
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',  
    'Content-Length: ' . strlen($data_string))           
);                                                                                                                     
$result = curl_exec($ch);  

公用写法【推荐】

function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();
    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // Optional Authentication:
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array( /*设置请求头*/               
        'Content-Type: application/json',  
        'Content-Length: ' . strlen($data))           
    );

    $result = curl_exec($curl);
    AddMessage2Log(print_r($result,true));
    curl_close($curl);
    return $result;
}