2012-05-07 148 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";