php - 更改 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 错误代码的数据,如下所示
但是我想改变标题状态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_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()
,但这更棘手。
推荐阅读
- python - Python Tkinter 网格管理器忽略了先前项目的大小和包装框架
- python - 任何/所有python短路:为什么以下不起作用?
- arrays - 如何使用功能性 react-native 从 PanResponder 中删除第一张卡?
- python - Python Ctypes 0 大小的数组?
- javascript - 我如何从 FileReader() onload 获取数据
- android - 我可以在应用程序之外为 WorkManager 注册 Worker Factory 吗?
- apache-spark - 使用自定义插件和调度框架在 Kubernetes 上优化 Apache Spark
- python - 错误:命令出错,退出状态为 1:在 Pycharm 中安装 pyAudio 时
- r - r - 获取作为输入的任何年份、季度或月份的开始和结束日期
- java - 由于证书导致 Maven 构建失败
不匹配任何主题替代名称: