Walkor,遠程請求一次JsonRPC的時候 ,比如用戶登陸 登陸成功正確返回是
{
"code": 0,
"msg": "ok",
"data": ""
}
那么,如果密碼輸入不正確登陸失敗呢?如何返回{
"code": 1,
"msg": "error",
"data": ""
}
方法我想到2種。
1、可以不拋exception,把結果放到data里面,不管是用戶存在還是不存在。
2、也可以自己改下rpc框架/Applications/JsonRpc/start.php,加個業(yè)務異常分支。業(yè)務異常不上報錯誤。
// 調(diào)用類的方法
try
{
$ret = call_user_func_array(array($class, $method), $param_array);
StatisticClient::report($class, $method, 1, 0, '', $statistic_address);
// 發(fā)送數(shù)據(jù)給客戶端,調(diào)用成功,data下標對應的元素即為調(diào)用結果
return $connection->send(array('code'=>0, 'msg'=>'ok', 'data'=>$ret));
}
// 業(yè)務異常,
catch(BusinessException $e)
{
$code = $e->getCode() ? $e->getCode() : 500;
StatisticClient::report($class, $method, 1, $code, $e, $statistic_address);
return $connection->send(array('code'=>$code, 'msg'=>$e->getMessage(), 'data'=>$e));
}
// 有異常
catch(Exception $e)
{
// 發(fā)送數(shù)據(jù)給客戶端,發(fā)生異常,調(diào)用失敗
$code = $e->getCode() ? $e->getCode() : 500;
StatisticClient::report($class, $method, $success, $code, $e, $statistic_address);
return $connection->send(array('code'=>$code, 'msg'=>$e->getMessage(), 'data'=>$e));
}