FuelPHPのRestコントローラ
FuelPHPにはRestコントローラというものがあります。
使い方は簡単で、『Controller_Rest』を継承したコントローラを作成し、その中に処理を入れていくだけで、以下のフォーマットの出力が可能になります。
(core/classes/format.phpを見ると、jsonpやらyamlやらもあるようです)
コントローラに追加していくメソッド名と、アクセスする為のURLは以下のようになります。
メソッド名) public function {HTTPメソッド}_{任意の名前} URL) /{コントローラ名}/{任意の名前}.{フォーマット} 例) public function get_list -> /xxx/list.xml -> /xxx/list.json
サンプルと出力内容
公式ドキュメントのサンプルは、以下のようになっています。
<?php class Controller_Test extends Controller_Rest { public function get_list() { $this->response(array( 'foo' => Input::get('foo'), 'baz' => array( 1, 50, 219 ), 'empty' => null )); } }
上記に『xml』『json』でアクセスした結果が以下になります。
xml
/test/list.xml?foo=bar
<?xml version="1.0" encoding="utf-8"?> <xml> <foo>bar</foo> <baz> <item>1</item> <item>50</item> <item>219</item> </baz> <empty></empty> </xml>
json
/test/list.json?foo=bar
{ "foo":"bar", "baz":[1,50,219], "empty":null }
CSV
csvの場合、Responseに対しに、以下のような配列で渡す必要があるようです。
<?php ... public function get_list() { $data = array( array(1, 2, 3, 4), array("aaa", "bbb", "ccc", Input::get('foo')) ); $this->Response($data); }
『/test/list.csv?foo=bar』にアクセスすると、csvのダウンロードが始まり、出力されたcsvの中身は以下のようになっています。
"1","2","3","4" "aaa","bbb","ccc","bar"
どうでしょう?Restコントローラ