Php 更改HTTP头中的状态代码,而不影响Yii 1 Restful API中的返回数据
我想返回Yii 1中带有HTTP错误代码的数据。所以我用下面的方法来获取数据Php 更改HTTP头中的状态代码,而不影响Yii 1 Restful API中的返回数据,php,api,exception,yii,header,Php,Api,Exception,Yii,Header,我想返回Yii 1中带有HTTP错误代码的数据。所以我用下面的方法来获取数据 $code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode(); $this->setOutputError($ex->getMessage()); $this->setOutputCode($c
$code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
$this->setOutputError($ex->getMessage());
$this->setOutputCode($code);
当我以这种方式使用它时,API返回的数据带有200个错误代码,如下所示
但我想改变头状态200,所以我抛出了这个异常,然后输出数据也改变了。我只想更改标题状态
$code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
$this->setOutputError($ex->getMessage());
$this->setOutputCode($code);
throw new CHttpException(400, 'Bad Request');
Yii 1.1没有响应抽象,您需要使用
http\u response\u code()
更改响应状态代码:
$code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
$this->setOutputError($ex->getMessage());
$this->setOutputCode($code);
http_response_code(400);
或者,您也可以使用
header()
,但这更复杂。您可以在return
语句\Yii::$app->response->statusCode=XXX
之前设置代码,其中XXX
是一个新的状态代码。您已经在代码中添加了CHttpException
-您确定使用的是Yii 2而不是Yii 1吗?@Bizley抱歉Yii 1