分享一个PHP调用RestFul接口的函数

php越来越前端化,大型系统中的php经常是调用后端服务的接口,这里分享一个函数。希望对大家有用。

/**
* [http 调用接口函数]
* @Date 2016-07-11
* @Author GeorgeHao
* @param string $url [接口地址]
* @param array $params [数组]
* @param string $method [GET\POST\DELETE\PUT]
* @param array $header [HTTP头信息]
* @param integer $timeout [超时时间]
* @return [type] [接口返回数据]
*/
function http($url, $params, $method = 'GET', $header = array(), $timeout = 5)
{
// POST 提交方式的传入 $set_params 必须是字符串形式
$opts = array(
CURLOPT_TIMEOUT => $timeout,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
); /* 根据请求类型设置特定参数 */
switch (strtoupper($method)) {
case 'GET':
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
break;
case 'POST':
$params = http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
case 'DELETE':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
$opts[CURLOPT_POSTFIELDS] = $params;
break;
case 'PUT':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 0;
$opts[CURLOPT_CUSTOMREQUEST] = 'PUT';
$opts[CURLOPT_POSTFIELDS] = $params;
break;
default:
throw new Exception('不支持的请求方式!');
} /* 初始化并执行curl请求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
return $data;
}

这个函数缺少验证调用权限,改天有空了完善。

上一篇:ubuntu command


下一篇:20181218 - PostgreSQL Auto Commit Guide(自动提交)