【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

[FuelPHP 1.7] Restコントローラの出力フォーマットに関するお話

PHP

Webチームの日下部です。

FuelPHP(1.7)のRestコントローラによる出力のフォーマット指定にまつわるお話を書いてみます。

いくつか指定方法があるので順番に!

 

デフォではAcceptの内容をみる

Restの設定のデフォは fuel/core/config/rest.php に記述されていて、その中で出力フォーマットに関しては

1
2
'ignore_http_accept' => false,
'default_format' => 'xml',

となっています。これの意味するところは、

  • リクエストヘッダのAcceptの内容を無視「しない」
  • フォーマット指定がなければXML形式で出力

というものです。

さてこの状態で Advanced REST client を使って、Acceptヘッダをいじらずにリクエストを送ってみると、

   Accept: */*

として解釈され、「形式なんでもOK」→「じゃあデフォのXMLどうぞ」となります。

ここで、 Advanced REST client の Headers の欄に

   Accept: */json

と書いてリクエストしてみると、「JSONで」→「じゃあJSONどうぞ」となります。

 

Acceptの内容を無視してみる

コンフィグを上書きしてリクエストヘッダのAcceptの内容を無視するようにしてみます。

fuel/app/config/rest.php を作成して、

1
2
3
4
return array(
    'ignore_http_accept' => true,
    'default_format' => 'xml',
);

と記述します。この状態で 「Accept: */json」 としても無視されて、「JSONで」→「じゃあXMLどうぞ」となります。

 

URIによる指定

URI内のアクション名の末尾に .xml という風にフォーマットを付け足すと、コンフィグによらずそのフォーマットで返ってきます。

 

コントローラのプロパティによる指定

何よりも優先されるのがコントローラの format プロパティです。

   protected $format = null;

デフォでは null がセットされていますが、ここでフォーマットを指定すると、問答無用でそのフォーマットで返却されます。

 

優先度

まとめると、優先度は

Acceptによる指定 < URIによる指定 < プロパティによる指定

となっています。

 

というか

ドキュメントに全部書いてありますね。お後がよろしいようで。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
1,426
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author