在不影响Yii 1 Restful API中返回数据的情况下更改HTTP头中的状态码

zzoitvuj  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(165)

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

$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');

busg9geu

busg9geu1#

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(),但这会比较棘手。

相关问题