Refined docs view, Added example requests

This commit is contained in:
Dan Brown 2020-01-18 09:48:30 +00:00
parent 45b5e631e2
commit 8016f1121e
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
4 changed files with 51 additions and 8 deletions

View File

@ -31,9 +31,12 @@ class ApiDocsGenerator
protected function loadDetailsFromFiles(Collection $routes): Collection
{
return $routes->map(function (array $route) {
$exampleResponseFile = base_path('dev/api/responses/' . $route['name'] . '.json');
$exampleResponse = file_exists($exampleResponseFile) ? file_get_contents($exampleResponseFile) : null;
$route['example_response'] = $exampleResponse;
$exampleTypes = ['request', 'response'];
foreach ($exampleTypes as $exampleType) {
$exampleFile = base_path("dev/api/{$exampleType}s/{$route['name']}.json");
$exampleContent = file_exists($exampleFile) ? file_get_contents($exampleFile) : null;
$route["example_{$exampleType}"] = $exampleContent;
}
return $route;
});
}

View File

@ -0,0 +1,4 @@
{
"name": "My own book",
"description": "This is my own little book"
}

View File

@ -0,0 +1,4 @@
{
"name": "My updated book",
"description": "This is my book with updated details"
}

View File

@ -12,32 +12,64 @@
@foreach($endpoints as $endpoint)
<div class="mb-xs">
<a href="#{{ $endpoint['name'] }}" class="text-mono">
<a href="#{{ $endpoint['name'] }}" class="text-mono inline block mr-s">
<span class="api-method" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
/{{ $endpoint['uri'] }}
</a>
<a href="#{{ $endpoint['name'] }}" class="text-mono">
{{ $endpoint['controller_method'] }}
</a>
</div>
@endforeach
@endforeach
</div>
<div>
<div style="overflow: auto;">
@foreach($docs as $model => $endpoints)
<section class="card content-wrap auto-height">
<h1 class="list-heading text-capitals">{{ $model }}</h1>
@foreach($endpoints as $endpoint)
<h6 class="text-uppercase text-muted float right">{{ $endpoint['controller_method'] }}</h6>
<h5 id="{{ $endpoint['name'] }}" class="text-mono mb-m">
<span class="api-method" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
{{ url($endpoint['uri']) }}
</h5>
<p class="mb-m">{{ $endpoint['description'] ?? '' }}</p>
@if($endpoint['body_params'] ?? false)
<details class="mb-m">
<summary class="text-muted">Body Parameters</summary>
<table class="table">
<tr>
<th>Param Name</th>
<th>Value Rules</th>
</tr>
@foreach($endpoint['body_params'] as $paramName => $rules)
<tr>
<td>{{ $paramName }}</td>
<td>
@foreach($rules as $rule)
<code class="mr-xs">{{ $rule }}</code>
@endforeach
</td>
</tr>
@endforeach
</table>
</details>
@endif
@if($endpoint['example_request'] ?? false)
<details details-highlighter class="mb-m">
<summary class="text-muted">Example Request</summary>
<pre><code class="language-json">{{ $endpoint['example_request'] }}</code></pre>
</details>
@endif
@if($endpoint['example_response'] ?? false)
<details details-highlighter>
<details details-highlighter class="mb-m">
<summary class="text-muted">Example Response</summary>
<pre><code class="language-json">{{ $endpoint['example_response'] }}</code></pre>
</details>
<hr class="mt-m">
@endif
@if(!$loop->last)
<hr>
@endif
@endforeach
</section>