こんにちは!ぐちです。
REST API
スマホアプリなどのバックエンドとしてサーバ側に配置するWeb APIがありますがこれらを自作する際の動作確認として様々な方法があります。
テスト用のクライアントアプリを作るなりGET、POSTどちらでも動作するようにパラメータの取得を工夫してブラウザから確認するなど挙げられます。ただAPIに手を入れたりクライアントアプリを作ったりしなければなりません。
めんどくさいですよね?!笑
そんな方に超便利なツールをご紹介します!
Advanced REST client
Google Chromeの拡張機能として公開されているリクエストを投げることができるフォームを提供しているツールです。Firefoxでも似たようなものがありますがこちらのほうが若干使いやすい気がします。笑
非常に便利な機能となっており使いこなせば動作確認が格段に実施しやすくなります。では、まずはインストールから。
テストコード
今回はkeyというパラメータ名で値を渡せばJSON形式でレスポンスを返すAPIを検証用に作りました。パラメータがない場合は「parameter is not exists.」という文字列を返すようにしています。
サンプルコードは以下の通りです。
<?php
App::uses('ApiAppController','Controller');
class ApiController extends ApiAppController {
public $uses = array('TblHoge');
public function index() {
$val = 'parameter is not exists.';
if(isset($this->reqObj['key'])) {
$val = $this->reqObj['key'];
}
parent::success(array('status' => 'ok','data' => $val));
}
}
<?php
App::uses('Controller', 'Controller');
class ApiAppController extends Controller {
protected $reqObj;
protected $result = array();
private $isError = false;
public function beforeFilter() {
parent::beforeFilter();
if($this->request->isPost()) {
$this->reqObj = $this->request->data;
} else {
$this->reqObj = $this->request->query;
}
$this->response->header('X-Content-Type-Options', 'nosniff');
}
protected function success($response = array()) {
$this->viewClass = 'Json';
$this->set('response', $response);
$this->set('_serialize', array('response'));
}
}
インストール
こちらからChromeにインストールします。
あとは表示される通りにアプリ画面からAdvanced REST clientをクリックして起動します。起動直後の画面は以下の通りです。
GETリクエスト
写真の赤枠にリクエスト送信先のURLを記入します。GETの場合はURL入力欄の下のリクエスト種別のラジオボタンでGETを選択します。
Sendボタンをクリックで指定したURLにリクエストを送信します。
パラメータを付加する際はURLの後ろに「?key=111」のようにGETパラメータを指定します。
ここまでであればブラウザからでも難なく確認することができますよね?Advanced REST clientが便利なのはここからです!!
POSTリクエスト
通常のブラウザでは確認することができないPOSTリクエストを送信することができるのがAdvanced REST clientの便利なところです。
下記の写真のようにリクエスト種別のラジオボタンで「POST」を選択して、「Form」タブをアクティブにしパラメータ値を入力します。
実行結果は想定通り下記のようになります。
もちろんパラメータなしでも想定通りの動作をすることを確認しましょう。
RESTful API向け
GET、POSTのほかにもPUTやDELETEなどRESTful APIに対応したリクエストを送ることができますのでAPIの動作確認にはバッチリな拡張機能となっています。
では今回はこの辺で。