Yii-応答

Webアプリケーションが要求を処理すると、HTTPヘッダー、本文、およびHTTPステータスコードを含む応答オブジェクトが生成されます。ほとんどの場合、応答アプリケーションコンポーネントを使用します。デフォルトでは、これはのインスタンスですyii\web\Response

応答HTTPステータスコードを管理するには、 yii\web\Response::$statusCodeプロパティ。のデフォルト値yii\web\Response::$statusCode 200です。

Step 1 −という名前の関数を追加します actionTestResponseSiteController

public function actionTestResponse() {
   Yii::$app→response->statusCode = 201;
}

Step 2 −Webブラウザをに向けた場合 http://localhost:8080/index.php?r=site/testresponse、201 Created responseHTTPステータスに注意してください。

リクエストが失敗したことを示したい場合は、事前定義されたHTTP例外の1つをスローできます-

  • yii\web\BadRequestHttpException −ステータスコード400。

  • yii\web\UnauthorizedHttpException −ステータスコード401。

  • yii\web\ForbiddenHttpException −ステータスコード403。

  • yii\web\NotFoundHttpException −ステータスコード404。

  • yii\web\MethodNotAllowedHttpException −ステータスコード405。

  • yii\web\NotAcceptableHttpException −ステータスコード406。

  • yii\web\ConflictHttpException −ステータスコード409。

  • yii\web\GoneHttpException −ステータスコード410。

  • yii\web\UnsupportedMediaTypeHttpException −ステータスコード415。

  • yii\web\TooManyRequestsHttpException −ステータスコード429。

  • yii\web\ServerErrorHttpException −ステータスコード500。

Step 3 −を変更します actionTestResponse 次のコードに示すように機能します。

public function actionTestResponse() {
   throw new \yii\web\GoneHttpException;
}

Step 4 −タイプ http://localhost:8080/index.php?r=site/test-response Webブラウザのアドレスバーに、 410 Gone 次の図に示すように、応答HTTPステータス。

Step 5 −HTTPヘッダーを送信するには headers応答コンポーネントのプロパティ。応答に新しいヘッダーを追加するには、actionTestResponse 次のコードで指定されているように機能します。

public function actionTestResponse() {
   Yii::$app->response->headers->add('Pragma', 'no-cache');
}

Step 6 −に移動 http://localhost:8080/index.php?r=site/test-response, プラグマヘッダーが表示されます。

Yiiは次の応答形式をサポートしています-

  • HTML − yii \ web \ HtmlResponseFormatterによって実装されます。

  • XML − yii \ web \ XmlResponseFormatterによって実装されます。

  • JSON − yii \ web \ JsonResponseFormatterによって実装されます。

  • JSONP − yii \ web \ JsonResponseFormatterによって実装されます。

  • RAW −フォーマットなしの応答。

Step 7 −で応答するには JSON フォーマット、変更 actionTestResponse 関数。

public function actionTestResponse() {
   \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
   return [
      'id' => '1',
      'name' => 'Ivan',
      'age' => 24,
      'country' => 'Poland',
      'city' => 'Warsaw'
   ];
}

Step 8 −ここで、 http://localhost:8080/index.php?r=site/test-response アドレスバーに次のように表示されます JSON 応答。

Yiiは、Location HTTPヘッダーを送信することにより、ブラウザーのリダイレクトを実装します。あなたは呼び出すことができますyii\web\Response::redirect() ユーザーブラウザをURLにリダイレクトするメソッド。

Step 9 −を変更します actionTestResponse このように機能します。

public function actionTestResponse() {
   return $this->redirect('http://www.tutorialspoint.com/');
}

さて、あなたが行くなら http://localhost:8080/index.php?r=site/test-response, お使いのブラウザはにリダイレクトされます TutorialsPoint ウェブサイト。

ファイルの送信

Yiiは、ファイル送信をサポートするために次のメソッドを提供します-

  • yii\web\Response::sendFile() −既存のファイルを送信します。

  • yii\web\Response::sendStreamAsFile() −既存のファイルストリームをファイルとして送信します。

  • yii\web\Response::sendContentAsFile() −テキスト文字列をファイルとして送信します。

このようにactionTestResponse関数を変更します-

public function actionTestResponse() {
   return \Yii::$app->response->sendFile('favicon.ico');
}

タイプ http://localhost:8080/index.php?r=site/test-response、のダウンロードダイアログウィンドウが表示されます favicon.ico ファイル-

応答は、 yii\web\Response::send()関数が呼び出されます。デフォルトでは、このメソッドは最後に呼び出されますyii\base\Application::run()方法。応答を送信するには、yii\web\Response::send() メソッドは次の手順に従います-

  • yii \ web \ Response :: EVENT_BEFORE_SENDイベントをトリガーします。
  • yii \ web \ Response :: prepare()メソッドを呼び出します。
  • yii \ web \ Response :: EVENT_AFTER_PREPAREイベントをトリガーします。
  • yii \ web \ Response :: sendHeaders()メソッドを呼び出します。
  • yii \ web \ Response :: sendContent()メソッドを呼び出します。
  • yii \ web \ Response :: EVENT_AFTER_SENDイベントをトリガーします。