【PHP】API実行ツールを作ってみよう(その1)

#はじめに
PHPでツール作成の一回目です。
今回はPHPを使ってAPIツールを作成していきたいと思います。
クライアント側(データ送信)とサーバ側(データ受信)があるので、それぞれ作成していきます。

#クライアント
クライアント側はChrome拡張機能の[Talend API Tester](https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm) を使用します。

1.[Talend API Tester](https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm) へアクセスし、右上の「Chromeに追加」のボタンを押下しインストール

![qiita_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/4a1547bb-e478-0a7c-d136-ca63192c7a5e.png)

2.Chromeの拡張機能にTalend API Testerが追加されているのでアイコンをクリック
![qiita_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/a370d3b7-78bb-fd55-80d0-02928467f79e.png)

3.このような画面が表示されれば起動成功です
![qiita_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/c7fc00f1-5b0d-fa8b-2115-3373ff49c2b7.png)
本来であればこの後、このツールを使ってサーバへの送信URLやパラメータを設定していくのですが、
まだサーバ側が出来ていないので一旦クライアントはここまでとします。

#サーバ
続いてサーバ側を作成していきます。
こちらがPHPになります。

1.「<b>c:￥xampp￥htdocs</b>」フォルダに「<b>api</b>」フォルダを作成します
![qiita_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/d7a6b1fc-973d-d8bd-15d0-be2549753a70.png)

2.「<b>api</b>」フォルダ内に「<b>server.php</b>」ファイルを作成します
中身は下記になります

```php:server.php
<?php

// パラメータチェック
if( !isset($_REQUEST['name']) ){
    echo "Error:nameパラメータが存在しません";
    exit;
}
$name = $_REQUEST['name'];

// クライアントからのデータをテキストファイルへ出力
// ※ファイル名が被らないようにするため、現在日時+ミリ秒でファイル名を生成
$outputFile = "".date("Y-m-d_His")."_".substr(explode(".", (microtime(true) . ""))[1], 0, 3).".txt";
file_put_contents( $outputFile, $name );

// レスポンス
echo "Success";
?>
```
#コード解説
- 2～6行目・・クライアントから送られてきているパラメータが存在しているかチェックし、存在しなかったらエラーメッセージを表示し終了しています。
- 7行目・・クライアントからの送信データを取得しています。
- 9～12行目・・クライアントからの送信データをテキストファイルへ出力しています。
- 14～15行目・・クライアントへレスポンスを返しています。

#クライアント(続き)
これでサーバ側が出来たので、クライアントからサーバに対してデータを送信してみましょう。

1.Talend API Testerを起動し、MY DRIVEの右側の「⋮」を押し、「<b>Add a project</b>」ボタンを押下
![qiita_cl_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/e7f38d37-d3b5-779a-e59f-e803d5c47fe8.png)

2.プロジェクト作成ダイアログが開くので、Name欄に「API」、その下のチェックボックスを外し、「<b>Create</b>」ボタンを押下
![qiita_cl_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/80b6c6bc-24e6-1e16-1b1f-17da5643c8c2.png)

3.MY DRIVEに「API」が出来るので、右側の「⋮」を押し、「<b>Add a request</b>」ボタンを押下
![qiita_cl_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/a79cb93f-d773-8d8b-0613-3d2f3e087043.png)

4.リクエストパラメータをセット
①「<b>GET</b>」を選択します
②「https://localhost/api/server.php」と入力します
③「QUERY PARAMETERS」を押下し、下の入力欄に「<b>name</b>」「<b>テスト</b>」と入力します
④URLの末尾に「<b>?name=テスト</b>」が追加されることを確認します
⑤「<b>Send</b>」ボタンを押下します
![qiita_cl_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/71789c9e-1eb4-bbe0-2d6d-53bb3349474b.png)

#クライアント動作確認
・「<b>Send</b>」ボタン押下後、画面下のResponseに「<b>200 OK</b>」が表示されていて、
右下の「<b>BODY</b>」に「<b>Success</b>」と表示されていれば成功しています
![qiita_cl_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/1b2ce37c-4bdb-aacf-97f1-0a6bc67f979e.png)

#サーバ動作確認
1.実行日時のファイル名でテキストファイルが作成されていることを確認
![qiita_sv_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/873aeedd-df77-b6ee-74da-84cccb580d30.png)

2.テキストファイルを開き、「<b>テスト</b>」の文字列が記載されていることを確認
![qiita_sv_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/8cfcf635-5723-c472-a2ba-0ef2734e39ea.png)

#最後に
このようなAPI実行は実際の業務でも割と使うことがあるかと思います。
次回は、クライアント部分をPHPを使って作成したいと思います。