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

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

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

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

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

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

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

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

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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

PHP

Webチームの日下部です。

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

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

 

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

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

'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 を作成して、

 return array(
    'ignore_http_accept' => true,
    'default_format' => 'xml',
);

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

 

URIによる指定

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

    http://localhost/test/index.xml

 

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

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

    protected $format = null;

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

 

優先度

まとめると、優先度は

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

となっています。

 

というか

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

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

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

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author