UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#056 PHPでcURLの機能を利用する方法。追記2

記入日:2023-03-05 編集日:2023-03-05

SQL見るだけクエリ。今回も、PHPのcURLを使ってAPIを利用する方法について考えてみようと思います。もう少し深掘りです。

この記事を読むと(約10分)
PHPのcURLを使って、APIでJSONをPHPで読み込む方法がイメージできます。

curlとは、PHPのlibcurlライブラリを使って、様々なプロトコルで外部のサイトやAPIにアクセスできる機能です。 GETやPOSTなどのHTTPメソッドを指定して、データを送信したり受け取ったりできます。

API関連のcurlの活用方法としては、例えば以下のようなコードがあります。

// 送信先URL
$url = 'https://example.com/api.php';

// 送信するデータ
$data = array(
    'name' => 'Taro',
    'age' => 20,
);

// JSON形式に変換
$json_params = json_encode($data);

// curl初期化
$ch = curl_init();

// オプション設定
curl_setopt($ch, CURLOPT_URL, $url); // URL指定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 出力内容を受け取る設定
curl_setopt($ch, CURLOPT_POST, true); // POST送信する設定
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_params); // POSTするデータ

// 実行
$response = curl_exec($ch);

// 終了処理
curl_close($ch);

// 受け取ったデータを表示(JSON形式)
echo $response;

このコードでは、$urlに指定したAPIに対して、$dataに入れたデータをJSON形式でPOST送信し、返ってきたレスポンスを表示しています。

curlの技術に関して詳しく解説すると長くなりますが、簡単に言うと、libcurlライブラリはC言語で書かれたネットワーク通信用のライブラリであり、PHPからもその機能を利用できるようにしたものです。libcurlは多くのプロトコルやオプションに対応しており、高速かつ安全な通信が可能です。

 

ちなみに、curlの中で-Hと書かれていると、CURLOPT_HTTPHEADERオプションに指定するという意味です。 例えば、以下のようなコマンドがあります。

curl -H "Content-Type: application/json" -X POST -d '{"name":"Taro","age":20}' https://example.com/api.php

このコマンドでは、-Hオプションでヘッダーを指定しています。これをPHPのcurl関数で書くと、以下のようになります。

// 送信先URL
$url = 'https://example.com/api.php';

// 送信するデータ
$data = array(
    'name' => 'Taro',
    'age' => 20,
);

// JSON形式に変換
$json_params = json_encode($data);

// ヘッダーを設定
$headers = array(
    'Content-Type: application/json',
);

// curl初期化
$ch = curl_init();

// オプション設定
curl_setopt($ch, CURLOPT_URL, $url); // URL指定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 出力内容を受け取る設定
curl_setopt($ch, CURLOPT_POST, true); // POST送信する設定
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_params); // POSTするデータ
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // ヘッダーを指定

// 実行
$response = curl_exec($ch);

// 終了処理
curl_close($ch);

// 受け取ったデータを表示(JSON形式)
echo $response;

このコードでは、`$headers`に入れたヘッダーをCURLOPT_HTTPHEADERオプションで指定しています。これは上記のコマンドと同じ動作をします。

なお、CURLOPT_USERAGENTオプションでユーザエージェントを指定した場合でも、CURLOPT_HTTPHEADERオプションでユーザエージェントを別に指定した場合は、CURLOPT_HTTPHEADERオプションで指定したものが優先されます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。