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

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

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

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

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

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC 技術検証(PoC)サービス

【CPU】AMD EPYC 技術検証(PoC)サービス

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

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

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

【15周年記念 特設サイト】ビヨンドは「2022.4.4」で15周年を迎えました!

【15周年記念 特設サイト】ビヨンドは「2022.4.4」で15周年を迎えました!

[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
facebook twitter はてなブックマーク
294

この記事をかいた人

About the author