CakePHP 3.4 でカスタム HTTP ボディを出力するには?

DDD
リリース: 2024-10-26 17:42:30
オリジナル
731 人が閲覧しました

How to Output Custom HTTP Body with CakePHP 3.4?

CakePHP 3.4 でカスタム HTTP ボディを出力する

CakePHP 3.4 では、ヘッダー処理により厳密なアプローチが導入され、コントローラー内でのデータの直接エコーが禁止されています。以下に示すように、コンテンツをエコーし​​ようとすると、「ヘッダーを発行できません」というエラーが発生します:

<code class="php">public function test() {
    $this->autoRender = false;
    echo json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
}</code>
ログイン後にコピー

CakePHP が文句を言う理由

この方法は CakePHP では推奨されませんいくつかの理由により、

  • テスト環境でデータが認識されない可能性があります。
  • 適切なヘッダーを設定する機能が妨げられます。
  • 切り捨てられる可能性があります。 data.

適切な出力方法

カスタム出力を送信するには、次の 2 つの推奨アプローチがあります。

  1. 応答オブジェクトの設定:

    PSR-7 準拠インターフェイスの使用:

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response = $this->response->withStringBody($content);
    $this->response = $this->response->withType('json');
    
    return $this->response;</code>
    ログイン後にコピー

    非推奨のインターフェイスの使用:

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response->body($content);
    $this->response->type('json');
    
    return $this->response;</code>
    ログイン後にコピー
  2. シリアル化されたビューを使用する:

    <code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()];
    
    $this->set('content', $content);
    $this->set('_serialize', 'content');</code>
    ログイン後にコピー

    このメソッドでは、JSON レンダリングを利用するためにリクエスト ハンドラー コンポーネントと適切な URL マッピングが必要です。

参考資料

詳細については、次のリソースを参照してください。

  • クックブック: コントローラー >コントローラーのアクション
  • クックブック: リクエスト オブジェクトとレスポンス オブジェクト >本体の設定
  • クックブック: ビュー > JSON および XML ビュー
  • PHP FIG 標準: PSR-7 HTTP メッセージ インターフェイス

以上がCakePHP 3.4 でカスタム HTTP ボディを出力するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!