Rest コントローラ

Rest コントローラとは?

Rest コントローラは Base コントローラを継承したもので、RESTful のサポートが組み込まれています。 これは、API を簡単に構築をすることが出来ます。

Please note: もし、REST コントローラの中で before()router メソッドを 使うなら、うまく動作させるために親クラスの parent::before() (または router) を呼び出さなければ いけません

Rest コントローラを使う

すべてのコントローラと同様に、fuel/app/classes/controllerディレクトリ内にクラスを作成します。 それらは Controller_Rest クラスを継承し、"Controller_" というプレフィックスを付けます。 以下は "test" コントローラの例です:

class Controller_Test extends Controller_Rest
{

	public function get_list()
	{
		return $this->response(array(
			'foo' => Input::get('foo'),
			'baz' => array(
				1, 50, 219
			),
			'empty' => null
		));
	}
}

このコントローラのメソッド "list" は、次の URL によって呼び出されます:

http://localhost/test/list.json?foo=bar

通常の "action_" プレフィックスの代わりに Rest コントローラは HTTP メソッドをプレフィックスに使います。 対応する HTTP メソッドのプレフィックスのメソッドがない場合は、"action_" プレフィックスにフォールバックします。 Rest コントローラがサポートする HTTP メソッドは次の通りです:

XML Base Node Name

When using XML output you can set the XML basenode by setting the $xml_basenode param.

class Controller_Test extends Controller_Rest
{
	// Set it for the whole controller
	protected $xml_basenode = 'my_basenode';

	// Or inside your controller function
	public function get_items()
	{
		$this->xml_basenode = 'other_basenode';

		return $this->response(array(
			'foo' => Input::get('foo'),
			'baz' => array(
				1, 50, 219
			),
			'empty' => null
		));
	}
}

You can also set the XML basenode app-globally by changing the rest.xml_basenode config setting.

HTTP メソッド 説明
GET 既存のリソースに関する情報を取得するために使われます。ブラウザに URL を入力しアクセスしたり、リンクをクリックしたときに使われます。 REST リソース (ユーザのような) から情報を取得するために最適です。
POST 既存の情報リソースを更新するために使われます。ブラウザはインターネット上の多くの種類のフォームに投稿するために このメソッドを使用します。しかしながら、いくつかのフォームは、 フィールドデータを含むクエリ文字列を送信する GET を使います。
PUT あまり用いられず、ほとんどのブラウザでサポートされていませんが、PUT は新しいリソースを作成するために使われます。
DELETE 同じく多くのブラウザで使われませんが、リソースを削除するために使われます。

出力

{
	"foo":"bar",
	"baz":[1,50,219],
	"empty":null
}

ファイル拡張子が URL で定義されているので、これは JSON として出力されます。デフォルトでは、XML フォーマット出力されるか、 fuel/core/config/rest.php に設定されているフォーマットで出力されます。

対応フォーマット

フォーマットの決定

返される結果のフォーマットを決定するために、REST コントローラは次のアルゴリズムを用います:

特殊なコントローラのメソッド

response($data = array(), $http_code = 200)

このメソッドは、フォーマットと出力ロジックを介して応答データを送信するために使用されます。 必要に応じて、2 番目のパラメータとしてステータスコードを設定することができます。