【问题标题】:Change status code in HTTP header without affecting return data in Yii 1 Restful API更改 HTTP 标头中的状态代码而不影响 Yii 1 Restful API 中的返回数据
【发布时间】:2020-08-11 09:05:22
【问题描述】:

我想在 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');

【问题讨论】:

  • 你可以在return声明\Yii::$app->response->statusCode = XXX之前在你的代码中设置XXX是一个新的状态码。您在代码中输入了CHttpException - 您确定您使用的是 Yii 2 而不是 Yii 1?
  • @Bizley 对不起 Yii 1

标签: php api exception yii header


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2014-02-08
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多