文章出處
文章列表
今天學RESTful API的編寫,發現不知道怎么發送HTTP PUT/PATCH/DELETE請求,還是要學習一個。
使用curl_opt
函數來發送各式各樣的http請求動作,不僅限于get和post。
在測試自己的restful api的時候,通過訪問這個代理發送http put/patch/delete請求的php頁面,完成測試。
<?php
/**
* http.php
* 用來向服務器的RESTful API發起各類HTTP請求的工具函數。
*
* 使用: http://mysite.com/http.php?action=xxx
* xxx \in {get,post,put,patch,delete}
*
* Created by PhpStorm.
* User: chris
* Date: 16/8/11
* Time: 下午1:22
*/
class commonFunction{
function callInterfaceCommon($URL,$type,$params,$headers){
$ch = curl_init($URL);
$timeout = 5;
if($headers!=""){
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
}else {
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
}
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
switch ($type){
case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
case "POST": curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
case "PATCH": curl_setopt($ch, CULROPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);break;
case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
}
$file_contents = curl_exec($ch);//獲得返回值
return $file_contents;
curl_close($ch);
}
}
$params="{user:\"admin\",pwd:\"admin\"}";
//$headers=array('Content-Type: text/html; charset=utf-8');
//$headers=array('accept: application/json; Content-Type:application/json-patch+json');
$headers=array('Content-Type:application/json-patch+json');
#$url=$GLOBALS["serviceUrl"]."/user";
$url='http://mysite.com/user/11';
$cf = new commonFunction();
$action=strtoupper($_GET['action']);
echo "你指定的HTTP請求動作為".$action."<br/><hr/>";
$strResult = $cf->callInterfaceCommon($url,$action,$params,$headers);
echo "執行該HTTP請求動作,得到<br/>".$strResult;
文章列表
全站熱搜