Sampath Wijesinghe
Sampath Wijesinghe

Reputation: 690

Change status code in HTTP header without affecting return data in Yii 1 Restful API

I want to return data with the HTTP error code in Yii 1. So I used the following way to get the data:

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

When I use it this way API returns data with 200 error code as below:

enter image description here

But I want to change header status 200, so I threw exception for this, then output data also changed. I want to change only the header status.

$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

Upvotes: 0

Views: 702

Answers (1)

rob006
rob006

Reputation: 22174

Yii 1.1 does not have response abstraction, you need to use http_response_code() to change response status code:

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

http_response_code(400);

Alternatively you may also use header(), but this is more tricky.

Upvotes: 1

Related Questions