memocon プログラミングのメモや物欲日記、雑記等

FuelPHP:Rest_Controllerの拡張子を省略した時のフォーマットを変更する

2012年07月12日 02時00分

FuelPHPには強力なWebAPI開発用(?)のコントローラーが備わっていると本や勉強会で知りそれならば使わない手はないと最初に手を出してみたのがRest_Controller。
これはWebAPIなどでjsonやxml、csv等を返すサービスを作る場合にとても便利な機能が満載なのだ。

documentや参考書籍を片目にどうにか希望通りの形までもっていけた。

しかしそこで気になったのがURLの拡張子を省略した時に返却されるフォーマットがxmlだったこと。

拡張子を省略した時の形式をjsonにしたかったので調べてみたらfuel/core/config/rest.phpにdefault_formatなるまんまなものがあったのでfuel/app/config/rest.phpにコピーして値をxmlからjsonに変更してみた。

fuel/app/config/rest.php

しかしこれだけでは不十分で同じrest.phpファイル内にあるignore_http_acceptがデフォルトのfalseの場合、
HTTPヘッダ情報のHTTP_ACCEPTに含まれるmimeタイプがRest_Controllerの$_supported_formatsの中に存在するとdefault_formatより優先されてしまう。
$_supported_formatsをjsonのみにした場合は問題ないがxmlもサポートして拡張子を省略した場合はjson形式に固定して返却したければこの値をtrueにする。

fuel/app/config/rest.php