PHP REST客户端API调用

时间:2012-05-07 18:44:21

标签: php json api rest curl

我想知道,有一种简单的方法来执行REST API GET调用吗?我一直在读cURL,但这是一个很好的方法吗?

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

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

谢谢!

3 个答案:

答案 0 :(得分:3)

有多种方法可以进行REST客户端API调用:

  1. 使用CURL
  2. 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);
    
    1. 使用Guzzle
    2. 它是一个" 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
      
      1. 使用file_get_contents
      2. 如果你有一个网址并且你的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);
        
        1. 使用Symfony's RestClient
        2. 如果您正在使用Symfony那里有一个很棒的休息客户端捆绑包,它甚至包含所有~100个异常并抛出它们而不是返回一些无意义的错误代码+消息。

          try {
              $restClient = new RestClient();
              $response   = $restClient->get('http://www.someUrl.com');
              $statusCode = $response->getStatusCode();
              $content    = $response->getContent();
          } catch(OperationTimedOutException $e) {
              // do something
          }
          
          1. 使用HTTPFUL
          2. Httpful是一个简单,可链接,可读的PHP库,旨在使HTTP健全。它允许开发人员专注于与API交互,而不是通过curl set_opt页面进行筛选,是一个理想的PHP REST客户端。

            Httpful包括......

            • 可读的HTTP方法支持(GET,PUT,POST,DELETE,HEAD和OPTIONS)
            • 自定义标题
            • 自动"智能"解析
            • 自动有效负载序列化
            • Basic Auth
            • 客户端证书身份验证
            • 请求"模板"

            实施例

            发送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)

您可以使用:

$result = file_get_contents( $url );

http://php.net/manual/en/function.file-get-contents.php

答案 2 :(得分:0)

如果启用了fopen包装,则可以使用file_get_contents。请参阅:http://php.net/manual/en/function.file-get-contents.php

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