2012-05-07 130 views
4

我在想,是否有一种简单的方法来执行REST API GET调用?我一直在阅读cURL,但这是一个很好的方法吗?PHP REST客户端API调用

我也遇到过php://输入但我不知道如何使用它。有没有人有我的例子?

我不需要高级API客户端的东西,我只需要对某个URL执行GET调用即可获取将由客户端解析的一些JSON数据。

谢谢!

回答

0

您可以使用file_get_contents如果fopen封装被启用。请参阅:http://php.net/manual/en/function.file-get-contents.php

如果它们不是,并且您无法修复,因为您的主机不允许它,cURL是一个很好的使用方法。

+0

您更喜欢哪种方法,以及为什么:cURL或file_get_contents? – EsTeGe

+0

'file_get_contents'通常比较容易,但只能处理'GET'。这对你的情况似乎已经足够了。我会尝试,如果你是1.确定你的服务器可以处理它,以及2.你确定以后不需要'POST' – Nanne

+0

file_get_contents似乎是这个用例最简单的。 – EsTeGe

2

有多种方式,使REST客户端API调用:

  1. 使用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); 
  • 使用Guzzle
  • 这是一个“PHP HTTP客户端,可以很容易地与HTTP/1.1工作,并采取了痛了耗费网络服务“。使用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 
    
  • 使用file_get_contents
  • 如果你有一个网址,你的PHP支持它,你可以只打电话的file_get_contents:

    $response = file_get_contents('http://example.com/path/to/api/call?param1=5'); 
    

    如果$响应是JSON,使用json_decode把它变成PHP数组:

    $response = json_decode($response); 
    
  • 使用Symfony's RestClient
  • 如果您正在使用的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
  • Httpful是一个简单的,可链接的,可读PHP旨在使发言HTTP理智库。它让开发人员专注于与API交互,而不是通过卷曲set_opt页面进行筛选,并且是理想的PHP REST客户端。

    Httpful包括...

    • 读HTTP方法支持(GET,PUT,POST,DELETE,HEAD和OPTIONS)
    • 自定义页眉
    • 自动 “智能” 分析
    • 自动有效负载序列化
    • 基本身份验证
    • 客户端证书身份验证
    • 请求“模板”

    Ex。

    发送GET请求。获取自动解析的JSON响应。

    库在响应中通知JSON内容类型并自动将响应分析为本机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";