文档
This commit is contained in:
parent
39ad209ab4
commit
83c91ac7c0
|
@ -2,7 +2,9 @@
|
|||
|
||||
namespace JsonRpc\Providers;
|
||||
|
||||
use App\Http\Middleware\JsonRpc;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use JsonRpc\Server\JsonRpcDoc;
|
||||
use JsonRpc\Server\JsonRpcServer;
|
||||
use JsonRpc\Server\JsonRpcTool;
|
||||
use Laravel\Lumen\Application;
|
||||
|
@ -41,13 +43,18 @@ class LumenServerServiceProvider extends ServiceProvider
|
|||
if (function_exists('env') && env('APP_DEBUG')) {
|
||||
|
||||
$tool = function () use ($config) {
|
||||
$doc = new JsonRpcTool($config);
|
||||
return $doc->render();
|
||||
$tool = new JsonRpcTool($config);
|
||||
return $tool->render();
|
||||
};
|
||||
|
||||
$this->app->router->get('tool.html', $tool);
|
||||
$this->app->router->post('tool.html', $tool);
|
||||
|
||||
$this->app->router->get('doc.html', function () use ($config) {
|
||||
$doc = new JsonRpcDoc($config);
|
||||
return $doc->render();
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -5,21 +5,55 @@ namespace JsonRpc\Server;
|
|||
class JsonRpcDoc
|
||||
{
|
||||
|
||||
protected $methods = [];
|
||||
protected $config;
|
||||
|
||||
public function __construct($dir)
|
||||
protected $classes;
|
||||
|
||||
public function __construct($config)
|
||||
{
|
||||
$this->methods = include $dir . '/methods.php';
|
||||
$this->map = include $config['map'];
|
||||
}
|
||||
|
||||
public function methods()
|
||||
{
|
||||
return $this->methods;
|
||||
$methods = [];
|
||||
foreach ($this->map as $key => $item) {
|
||||
$methods[] = [
|
||||
'method' => $key,
|
||||
'desc' => $this->desc($item[0], $item[1]),
|
||||
];
|
||||
}
|
||||
return $methods;
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('doc', ['doc' => $this]);
|
||||
|
||||
/**
|
||||
* @var $view Factory
|
||||
*/
|
||||
$view = view();
|
||||
|
||||
dump($this->methods());
|
||||
exit;
|
||||
|
||||
$view->share('methods', $this->methods());
|
||||
|
||||
return $view->exists('doc') ?
|
||||
$view->make('doc') :
|
||||
$view->file(__DIR__ . '/../views/doc.blade.php');
|
||||
}
|
||||
|
||||
protected function desc($class, $method)
|
||||
{
|
||||
if (!isset($this->classes[$class])) {
|
||||
$reflector = new \ReflectionClass($class);
|
||||
$this->classes[$class] = $reflector;
|
||||
} else {
|
||||
$reflector = $this->classes[$class];
|
||||
}
|
||||
|
||||
return str_replace("/**\n",'',$reflector->getMethod($method)->getDocComment());
|
||||
}
|
||||
|
||||
}
|
106
src/views/doc.blade.php
Normal file
106
src/views/doc.blade.php
Normal file
|
@ -0,0 +1,106 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Json Rpc Doc</title>
|
||||
<link href="https://cdn.bootcss.com/twitter-bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.bootcss.com/highlight.js/9.13.1/styles/ocean.min.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0">
|
||||
<a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">Json Rpc Doc</a>
|
||||
{{--<input class="form-control form-control-dark w-100" type="text" placeholder="Search" aria-label="Search">--}}
|
||||
{{--<ul class="navbar-nav px-3">--}}
|
||||
{{--<li class="nav-item text-nowrap">--}}
|
||||
{{--<a class="nav-link" href="#">Sign out</a>--}}
|
||||
{{--</li>--}}
|
||||
{{--</ul>--}}
|
||||
</nav>
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<nav class="col-md-3 d-none d-md-block bg-light sidebar">
|
||||
<div class="sidebar-sticky">
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#">
|
||||
<span data-feather="home"></span>
|
||||
Method <span class="sr-only">(current)</span>
|
||||
</a>
|
||||
</li>
|
||||
@foreach( $methods as $method )
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#{{$method['method']}}">
|
||||
<span data-feather="file"></span>
|
||||
{{$method['method']}}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<main role="main" class="col-md-8 ml-sm-auto col-lg-9 pt-3 px-4">
|
||||
<h2>Request</h2>
|
||||
<form method="POST">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="endpoint">Endpoint</label>
|
||||
{{--<input type="text" class="form-control" id="endpoint" placeholder="Endpoint"--}}
|
||||
{{-- value="{{$endpoint}}" readonly>--}}
|
||||
</div>
|
||||
{{--<div class="form-group col-md-2">--}}
|
||||
{{--<label for="method">Request Method</label>--}}
|
||||
{{--<select class="form-control" id="method">--}}
|
||||
{{--<option>GET</option>--}}
|
||||
{{--<option>POST</option>--}}
|
||||
{{--</select>--}}
|
||||
{{--</div>--}}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="inputAddress">Method</label>
|
||||
<select class="form-control" id="method" name="method">
|
||||
{{--@foreach($methods as $k => $v)--}}
|
||||
{{--<option>{{$k}}</option>--}}
|
||||
{{--@endforeach--}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="inputAddress">Params</label>
|
||||
{{--<input type="text" class="form-control" name="params" id="params" placeholder="逗号分隔"--}}
|
||||
{{--value="{{$params}}">--}}
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Request</button>
|
||||
</form>
|
||||
<div class="row col-md-12">
|
||||
{{--@if( !empty($error) )--}}
|
||||
{{--<div id='alert' class="alert alert-danger" role="alert">--}}
|
||||
{{--RpcServerException: {{$error['message']}} with code {{$error['code']}}--}}
|
||||
{{--</div>--}}
|
||||
{{--@endif--}}
|
||||
{{--@if( !empty($result) )--}}
|
||||
{{--<h5>Result:</h5>--}}
|
||||
|
||||
{{--<div class="col-md-12">--}}
|
||||
{{--<pre><code class="json">{{$result}}</code></pre>--}}
|
||||
{{--</div>--}}
|
||||
{{--@endif--}}
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
|
||||
<script>window.jQuery || document.write('<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.slim.js"><\/script>')</script>
|
||||
<script src="https://cdn.bootcss.com/twitter-bootstrap/4.2.1/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/highlight.js/9.13.1/highlight.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/highlight.js/9.13.1/languages/json.min.js"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user