読者です 読者をやめる 読者になる 読者になる

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コントローラ