Open Cherry-toto opened 3 years ago
项目API结构:
其中:Wechat文件夹下面的两个类,Login.php和Register.php,同个分组, 请求接口分别是: 登录:/api/wechat/login/index 注册:/api/wechat/register/index 文件代码节选: `/**
@ApiGroupDescription("微信小程序相关") */ class Register extends Base {
/**
public function index(){ $params = $this->_params; $Val = new Validator($this->_params); $Val->rule('required', 'companyID')->message('物流公司ID不能为空!') ->rule('required', 'username')->message('用户昵称不能为空!') ->rule('required', 'sex')->message('用户性别不能为空!') ->rule('required', 'openid')->message('openid不能为空!');
if(!$Val->validate()) { $msg = []; foreach ($Val->errors() as $k=>$v){ $msg[] = $k.':'.implode('|',$v); } $msg = implode(',',$msg); return $this->writeJson( 600, ['error' => $msg], $msg ); } $wx = new AppletUser(); $res = $wx->register($params); if($res){ return $this->writeJson( 200, $res, 'ok' ); }else { return $this->writeJson( 600, ['error' => $wx->getError()], $wx->getError() ); }
}
} /**
@ApiGroupDescription("微信小程序相关") */ class Login extends Base {
public function index(){
$params = $this->_params; $Val = new Validator($this->_params); $Val->rule('required', 'code')->message('CODE不能为空!'); if(!$Val->validate()) { $msg = []; foreach ($Val->errors() as $k=>$v){ $msg[] = $k.':'.implode('|',$v); } $msg = implode(',',$msg); return $this->writeJson( 600, ['error' => $msg], $msg ); } $wx = new AppletUser(); $res = $wx->login($params); if($res){ return $this->writeJson( 200, $res, 'ok' ); }else { return $this->writeJson( 600, ['error' => $wx->getError()], $wx->getError() ); }
}`
API在同个分组,里面请求的同个方法名,但是不同的类里面 最后导致,doc文档左侧菜单只显示一个函数。(easyswoole6群:524475224 有我发的消息截图,此处由于网络问题无法上传图片)
根据分析,我找到对应的方法只需要加上控制器名字进行区分方法,这样就可以避免。
EasySwoole\HttpAnnotation\Utility\AnnotationDoc line:128行 $controllerAnnotation = $objectAnnotation->getController(); if(!$controllerAnnotation){ $controllerName = 'default'; }else{ $controllerName = $controllerAnnotation->value; } line:143行 $groupList[$currentGroupName][$controllerName.'-'.$method->getMethodName()] = $method; line: 148行 标记ID锚点 $html .= "<h2 class='api-method {$currentGroupName}' id='{$currentGroupName}-{$controllerName}-{$methodName}'>{$apiTag->name}{$deprecated}</h2>{$this->CLRF}";
$controllerAnnotation = $objectAnnotation->getController(); if(!$controllerAnnotation){ $controllerName = 'default'; }else{ $controllerName = $controllerAnnotation->value; }
$groupList[$currentGroupName][$controllerName.'-'.$method->getMethodName()] = $method;
$html .= "<h2 class='api-method {$currentGroupName}' id='{$currentGroupName}-{$controllerName}-{$methodName}'>{$apiTag->name}{$deprecated}</h2>{$this->CLRF}";
项目API结构:
其中:Wechat文件夹下面的两个类,Login.php和Register.php,同个分组, 请求接口分别是: 登录:/api/wechat/login/index 注册:/api/wechat/register/index 文件代码节选: `/**
@ApiGroupDescription("微信小程序相关") */ class Register extends Base {
/**
public function index(){ $params = $this->_params; $Val = new Validator($this->_params); $Val->rule('required', 'companyID')->message('物流公司ID不能为空!') ->rule('required', 'username')->message('用户昵称不能为空!') ->rule('required', 'sex')->message('用户性别不能为空!') ->rule('required', 'openid')->message('openid不能为空!');
}
}
/**
@ApiGroupDescription("微信小程序相关") */ class Login extends Base {
/**
public function index(){
}
}`
API在同个分组,里面请求的同个方法名,但是不同的类里面 最后导致,doc文档左侧菜单只显示一个函数。(easyswoole6群:524475224 有我发的消息截图,此处由于网络问题无法上传图片)
根据分析,我找到对应的方法只需要加上控制器名字进行区分方法,这样就可以避免。
获取控制器名字,且判断是否有配置@controller,如果没有则给他一个默认default
EasySwoole\HttpAnnotation\Utility\AnnotationDoc line:128行
$controllerAnnotation = $objectAnnotation->getController(); if(!$controllerAnnotation){ $controllerName = 'default'; }else{ $controllerName = $controllerAnnotation->value; }
line:143行$groupList[$currentGroupName][$controllerName.'-'.$method->getMethodName()] = $method;
line: 148行 标记ID锚点$html .= "<h2 class='api-method {$currentGroupName}' id='{$currentGroupName}-{$controllerName}-{$methodName}'>{$apiTag->name}{$deprecated}</h2>{$this->CLRF}";