CakePHP2ではアクションが終わるとビューの描画に処理が移ってしまう。JSON APIを実装する場合はビューが不要なので、そうならないために、autoRender
やautoLayout
の値をfalse
にしておく。また、Content-Type
はapplication/json
にしたいので、response->type()
でJSONを指定しておく。
各アクションにこれらの設定を書いてもいいが、コントローラにJSON APIのエンドポイントのアクションしかない場合は、beforeFilter
で宣言しておくと重複して書かないで良いので楽。
class ApiController extends AppController
{
public function beforeFilter()
{
parent::beforeFilter();
$this->autoRender = false;
$this->autoLayout = false;
$this->response->type('json');
}
}