优化API文档生成

pull/477/MERGE
Karson 2024-11-28 11:46:44 +08:00
parent 77300998fc
commit 279d8d876f
4 changed files with 19 additions and 13 deletions

View File

@ -98,13 +98,19 @@ class Api extends Command
foreach ($files as $name => $file) { foreach ($files as $name => $file) {
if (!$file->isDir() && $file->getExtension() == 'php') { if (!$file->isDir() && $file->getExtension() == 'php') {
$filePath = $file->getRealPath(); $filePath = $file->getRealPath();
$classes[] = $this->getClassFromFile($filePath); $className = $this->getClassFromFile($filePath);
if ($className) {
$classes[] = $className;
}
} }
} }
} else { } else {
foreach ($controller as $index => $item) { foreach ($controller as $index => $item) {
$filePath = $moduleDir . Config::get('url_controller_layer') . DS . $item . '.php'; $filePath = $moduleDir . Config::get('url_controller_layer') . DS . $item . '.php';
$classes[] = $this->getClassFromFile($filePath); $className = $this->getClassFromFile($filePath);
if ($className) {
$classes[] = $className;
}
} }
} }
@ -183,7 +189,7 @@ class Api extends Command
} }
} }
} }
$className = $namespace . '\\' . $class;
return $namespace . '\\' . $class; return preg_match('/([a-z0-9_\\]+)([a-z0-9_]+)$/i', $className) ? $className : '';
} }
} }

View File

@ -90,14 +90,15 @@ class Builder
$typeArr = [ $typeArr = [
'integer' => 'number', 'integer' => 'number',
'file' => 'file', 'file' => 'file',
]; ];
$paramslist = array(); $paramslist = array();
foreach ($docs['ApiParams'] as $params) { foreach ($docs['ApiParams'] as $params) {
$inputtype = $params['type'] && isset($typeArr[$params['type']]) ? $typeArr[$params['type']] : ($params['name'] == 'password' ? 'password' : 'text'); $type = strtolower($params['type'] ?? 'string');
$inputtype = $typeArr[$type] ?? ($params['name'] == 'password' ? 'password' : 'text');
$tr = array( $tr = array(
'name' => $params['name'], 'name' => $params['name'],
'type' => $params['type'] ?? 'string', 'type' => $type,
'inputtype' => $inputtype, 'inputtype' => $inputtype,
'sample' => $params['sample'] ?? '', 'sample' => $params['sample'] ?? '',
'required' => $params['required'] ?? true, 'required' => $params['required'] ?? true,
@ -162,7 +163,7 @@ class Builder
'OPTIONS' => 'label-info' 'OPTIONS' => 'label-info'
); );
return isset($labes[$method]) ? $labes[$method] : $labes['GET']; return $labes[$method] ?? $labes['GET'];
} }
public function parse() public function parse()
@ -230,7 +231,7 @@ class Builder
foreach ($docsList as $index => &$methods) { foreach ($docsList as $index => &$methods) {
$methodSectorArr = []; $methodSectorArr = [];
foreach ($methods as $name => $method) { foreach ($methods as $name => $method) {
$methodSectorArr[$name] = isset($method['weigh']) ? $method['weigh'] : 0; $methodSectorArr[$name] = $method['weigh'] ?? 0;
} }
arsort($methodSectorArr); arsort($methodSectorArr);
$methods = array_merge(array_flip(array_keys($methodSectorArr)), $methods); $methods = array_merge(array_flip(array_keys($methodSectorArr)), $methods);
@ -253,7 +254,6 @@ class Builder
public function render($template, $vars = []) public function render($template, $vars = [])
{ {
$docsList = $this->parse(); $docsList = $this->parse();
return $this->view->display(file_get_contents($template), array_merge($vars, ['docsList' => $docsList])); return $this->view->display(file_get_contents($template), array_merge($vars, ['docsList' => $docsList]));
} }
} }

View File

@ -154,8 +154,8 @@
<div id="sidebar"> <div id="sidebar">
<div class="list-group panel"> <div class="list-group panel">
{foreach name="docsList" id="docs"} {foreach name="docsList" id="docs"}
<a href="#{$key}" class="list-group-item" data-toggle="collapse" data-parent="#sidebar">{$key} <i class="fa fa-caret-down"></i></a> <a href="#{$key|md5|substr=0,8}" class="list-group-item" data-toggle="collapse" data-parent="#sidebar">{$key} <i class="fa fa-caret-down"></i></a>
<div class="child collapse" id="{$key}"> <div class="child collapse" id="{$key|md5|substr=0,8}">
{foreach name="docs" id="api" } {foreach name="docs" id="api" }
<a href="javascript:;" data-id="{$api.id}" class="list-group-item">{$api.title} <a href="javascript:;" data-id="{$api.id}" class="list-group-item">{$api.title}
<span class="tag"> <span class="tag">

View File

@ -80,7 +80,7 @@ class Common extends Api
/** /**
* 上传文件 * 上传文件
* @ApiMethod (POST) * @ApiMethod (POST)
* @ApiParams (name="file", type="File", required=true, description="文件流") * @ApiParams (name="file", type="file", required=true, description="文件流")
*/ */
public function upload() public function upload()
{ {