在PHP中调用REST API
我们的客户给了我一个REST API,我需要给它打个PHP电话。 但事实上API提供的文档非常有限,所以我不知道如何调用该服务。
我试图谷歌它,但唯一出现的是一个已经过期的雅虎! 如何调用服务的教程。 不提及标题或任何深度信息。
有没有关于如何调用REST API的一些体面的信息,或者有关它的一些文档? 因为即使在W3schools,他们也只描述SOAP方法。 在PHP中制作其他API有什么不同的选择?
您可以使用PHP cURL
Extension访问任何REST API。 但是,API文档(方法,参数等)必须由您的客户提供!
例:
// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value
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_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
如果你有一个url并且你的php支持它,你可以调用file_get_contents:
$response = file_get_contents('http://example.com/path/to/api/call?param1=5');
如果$ response是JSON,请使用json_decode将其转换为php数组:
$response = json_decode($response);
如果$ response是XML,请使用simple_xml类:
$response = new SimpleXMLElement($response);
http://sg2.php.net/manual/en/simplexml.examples-basic.php
使用Guzzle。 这是一个“PHP HTTP客户端,可以轻松处理HTTP / 1.1并消除Web服务的消耗”。 使用Guzzle比使用cURL更容易。
这里有一个来自网站的例子:
$client = new GuzzleHttpClient();
$res = $client->get('https://api.github.com/user', [
'auth' => ['user', 'pass']
]);
echo $res->getStatusCode(); // 200
echo $res->getHeader('content-type'); // 'application/json; charset=utf8'
echo $res->getBody(); // {"type":"User"...'
var_export($res->json()); // Outputs the JSON decoded data
链接地址: http://www.djcxy.com/p/20283.html