Yii-応答
Webアプリケーションが要求を処理すると、HTTPヘッダー、本文、およびHTTPステータスコードを含む応答オブジェクトが生成されます。ほとんどの場合、応答アプリケーションコンポーネントを使用します。デフォルトでは、これはのインスタンスですyii\web\Response。
応答HTTPステータスコードを管理するには、 yii\web\Response::$statusCodeプロパティ。のデフォルト値yii\web\Response::$statusCode 200です。
Step 1 −という名前の関数を追加します actionTestResponse に SiteController。
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イベントをトリガーします。