我想知道,有一种简单的方法来执行REST API GET调用吗?我一直在读cURL,但这是一个很好的方法吗?
我也遇到了php://输入,但我不知道如何使用它。有没有人有我的例子?
我不需要高级API客户端,我只需要对某个URL执行GET调用即可获取一些将由客户端解析的JSON数据。
谢谢!
答案 0 :(得分:3)
有多种方法可以进行REST客户端API调用:
CURL是最简单,最好的方式。这是一个简单的电话
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POST DATA);
$result = curl_exec($ch);
print_r($result);
curl_close($ch);
它是一个" PHP HTTP客户端,可以轻松使用HTTP / 1.1并消除使用Web服务的痛苦"。使用Guzzle比使用cURL更容易。
以下是网站上的一个例子:
$client = new GuzzleHttp\Client();
$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
如果你有一个网址并且你的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);
如果您正在使用Symfony那里有一个很棒的休息客户端捆绑包,它甚至包含所有~100个异常并抛出它们而不是返回一些无意义的错误代码+消息。
try {
$restClient = new RestClient();
$response = $restClient->get('http://www.someUrl.com');
$statusCode = $response->getStatusCode();
$content = $response->getContent();
} catch(OperationTimedOutException $e) {
// do something
}
Httpful是一个简单,可链接,可读的PHP库,旨在使HTTP健全。它允许开发人员专注于与API交互,而不是通过curl set_opt页面进行筛选,是一个理想的PHP REST客户端。
Httpful包括......
实施例
发送GET请求。获取自动解析的JSON响应。
库在响应中注意到JSON Content-Type,并自动将响应解析为本机PHP对象。
$uri = "https://www.googleapis.com/freebase/v1/mqlread?query=%7B%22type%22:%22/music/artist%22%2C%22name%22:%22The%20Dead%20Weather%22%2C%22album%22:%5B%5D%7D";
$response = \Httpful\Request::get($uri)->send();
echo 'The Dead Weather has ' . count($response->body->result->album) . " albums.\n";
答案 1 :(得分:1)
答案 2 :(得分:0)
如果启用了fopen包装,则可以使用file_get_contents
。请参阅:http://php.net/manual/en/function.file-get-contents.php
如果不是,并且您无法修复,因为您的主机不允许,cURL
是一种很好的使用方法。