response($data = array(), $http_code = 200)
このメソッドは、フォーマットと出力ロジックを介して応答データを送信するために使用されます。 必要に応じて、2 番目のパラメータとしてステータスコードを設定することができます。
Rest コントローラは Base コントローラを継承したもので、RESTful のサポートが組み込まれています。 これは、API を簡単に構築をすることが出来ます。
Please note: もし、REST コントローラの中で before() や router メソッドを 使うなら、うまく動作させるために親クラスの parent::before() (または router) を呼び出さなければ いけません。
すべてのコントローラと同様に、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
));
}
}
This controller method "list" is called by the following URL:
http://localhost/test/list.json?foo=bar
通常の "action_" プレフィックスの代わりに Rest コントローラは HTTP メソッドをプレフィックスに使います。 対応する HTTP メソッドのプレフィックスのメソッドがない場合は、"action_" プレフィックスにフォールバックします。 Rest コントローラがサポートする HTTP メソッドは次の通りです:
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 コントローラは次のアルゴリズムを用います:
In most cases the HTTP_ACCEPT is present and contains (at least) text/html, which is a valid result format. This has the implication that the $rest_format, and any global default defined in the rest.php configuration file, will never be used.
To disable the HTTP_ACCEPT as a valid format source, set the configuration key ignore_http_accept
in the rest.php to false
.
Note that it is considered bad practice to hardcode any result format in your REST controller. It should be up to the client
to specify in which format the result should be returned. In case of HTTP_ACCEPT, most ajax solutions like for example
jQuery.ajax()
allow you to set the accept header to application/json.
このメソッドは、フォーマットと出力ロジックを介して応答データを送信するために使用されます。 必要に応じて、2 番目のパラメータとしてステータスコードを設定することができます。