Yii2中的http状态码是在yii/web/Response.php
里面定义,基类GuzzleHttp\Psr7\Response.php
,属性statusCode
表示状态码
而逻辑错误码是用code
表示
可参考yii\web\ServerErrorHttpException
的定义,ServerErrorHttpException
的构造函数把设置成500,而错误码code
默认为0,调用时传入值即可,如:
public function actionIndex()
{
if(1){
return [
'status' => 200,
'code' => 20010,
'message' => '资料不完整',
];
}else{
$message = "服务器炸了";
$code = 50010;
throw new ServerErrorHttpException($message,$code);
}
}
main.php设置统一响应格式
'components' => [
'response' => [
'class' => 'yii\web\Response',
'format' => 'json',
'on beforeSend' => function ($event) {
$response = $event->sender;
$status = $response->statusCode??null;
$message = $response->data['message']??'';
$code = $response->data['code']??0;
$data = $response->data['data']??'';
$exception = Yii::$app->errorHandler->exception;
//异常错误
if($exception){
$code = $exception->getCode();
$message = $exception->getMessage();
}
$response->data = [
'status' => $status,
'message' => $message,
'code' => $code,
'data' => $data,
];
},
],
],