4

REST API GET 呼び出しを実行する簡単な方法はありますか? 私は cURL について読んでいますが、それは良い方法ですか?

php://input にも出くわしましたが、使い方がわかりません。誰かが私の例を持っていますか?

高度な API クライアントは必要ありません。特定の URL に対して GET 呼び出しを実行して、クライアントによって解析される JSON データを取得するだけで済みます。

ありがとう!

4

3 に答える 3

7

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);
  1. ガズルを使う

これは、「HTTP/1.1 での作業を容易にし、Web サービスを利用する手間を省く PHP HTTP クライアント」です。Guzzle での作業は、cURL での作業よりもはるかに簡単です。

Web サイトの例を次に示します。

$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を使用する

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);
  1. Symfony の RestClientを使用する

Symfony を使用している場合は、意味のないエラー コードとメッセージを返す代わりに、100 個までの例外をすべて含めてスローする優れた REST クライアント バンドルがあります。

try {
    $restClient = new RestClient();
    $response   = $restClient->get('http://www.someUrl.com');
    $statusCode = $response->getStatusCode();
    $content    = $response->getContent();
} catch(OperationTimedOutException $e) {
    // do something
}
  1. HTTPFULを使用する

Httpful は、HTTP の会話を正常にすることを目的とした、シンプルで連鎖可能で読み取り可能な PHP ライブラリです。開発者は、curl set_opt ページをふるいにかけるのではなく、API との対話に集中でき、理想的な PHP REST クライアントです。

Httpfulには...

  • 読み取り可能な HTTP メソッドのサポート (GET、PUT、POST、DELETE、HEAD、および OPTIONS)
  • カスタム ヘッダー
  • 自動「スマート」解析
  • ペイロードの自動シリアル化
  • 基本認証
  • クライアント側の証明書認証
  • 「テンプレート」をリクエストする

元。

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";
于 2015-12-08T07:53:39.763 に答える
2

以下を使用できます。

$result = file_get_contents( $url );

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

于 2012-05-07T18:46:02.957 に答える
2

file_get_contentsfopen ラッパーが有効になっている場合に使用できます。参照: http://php.net/manual/en/function.file-get-contents.php

そうではなく、ホストが許可していないために修正できない場合cURLは、使用するのに適した方法です。

于 2012-05-07T18:46:48.440 に答える