更改HTTP标头中的状态代码而不会影响Yii 1 Restful API中的返回数据

问题描述

我想在Yii 1中返回带有HTTP错误代码的数据。因此,我使用以下方法获取数据。

  $code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
            $this->setOutputError($ex->getMessage());
            $this->setOutputCode($code);

当我以这种方式使用API​​时,它返回带有200个错误代码的数据,如下所示

enter image description here

但是我想更改标头状态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');

enter image description here

解决方法

Yii 1.1没有响应抽象,您需要使用http_response_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(),但这比较棘手。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...