Yii响应 Yii HTTP请求 Yii URL格式 当Web应用程序处理请求时,它会生成一个响应对象,其中包含HTTP标头,正文和HTTP状态码。在大多数情况下,您将使用响应应用程序组件。默认情况下,它是 yii \ web \ Response的 一个实例。 要管理响应HTTP状态代码,请使用 yii \ web \ Response :: $ statusCode 属性。 yii \ web \ Response :: $ statusCode 的默认值是200。 步骤1 - 将一个名为 actionTestResponse 的函数添加到 SiteController 。 public function actionTestResponse() { Yii::$app→response->statusCode = 201; } 第2步 - 如果您将浏览器指向 http:// localhost:8080 / index.php?r = site / testresponse ,您应该注意到201 Created的HTTP状态。 如果你想表明请求不成功,你可以抛出一个预定义的HTTP异常 - 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。 第3步 - 修改 actionTestResponse 函数,如下面的代码所示。 public function actionTestResponse() { throw new \yii\web\GoneHttpException; } 第4步 - 在Web浏览器的地址栏中键入 http:// localhost:8080 / index.php?r =站点/测试响应 ,您可以看到 410 Gone 响应HTTP状态,如下图所示。 步骤5 - 您可以通过修改 响应组件的 headers 属性来发送HTTP标 头 。要将一个新的头添加到响应中,请修改 actionTestResponse 函数,如下面的代码所示。 public function actionTestResponse() { Yii::$app->response->headers->add('Pragma', 'no-cache'); } 第6步 - 转到 http:// localhost:8080 / index.php?r = site / test- response, 您将看到我们的Pragma头文件。 Yii支持以下响应格式 - HTML - 由yii \ web \ HtmlResponseFormatter实现。 XML - 由yii \ web \ XmlResponseFormatter实现。 JSON - 由yii \ web \ JsonResponseFormatter实现。 JSONP - 由yii \ web \ JsonResponseFormatter实现。 RAW - 没有任何格式的响应。 第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' ]; } 第8步 - 现在, 在地址栏中输入 http:// localhost:8080 / index.php?r =站点/测试响应 ,您可以看到以下 JSON 响应。 Yii通过发送Location HTTP头来实现浏览器重定向。您可以调用 yii \ web \ Response :: redirect() 方法将用户浏览器重定向到URL。 第9步 - 以 这种方式修改 actionTestResponse 函数。 public function actionTestResponse() { return $this->redirect('http://www.codingdict.com/'); } 现在,如果您转到 http:// localhost:8080 / index.php?r = site / test-response, 您的浏览器将在 codingdict 网站上重定向。 发送文件 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 =站点/测试响应 ,您将看到 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事件。 Yii HTTP请求 Yii URL格式