Skip to content

Commit d8da531

Browse files
(v2.11) enabled
1 parent c64f9b8 commit d8da531

File tree

9 files changed

+46
-9
lines changed

9 files changed

+46
-9
lines changed

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Read more: https://medium.com/web-developer/laravel-automatically-generate-api-d
6161
You can install the package via composer:
6262

6363
```bash
64-
composer require rakutentech/laravel-request-docs --dev
64+
composer require rakutentech/laravel-request-docs
6565
```
6666

6767

@@ -72,6 +72,18 @@ php artisan vendor:publish --tag=request-docs-config
7272
php artisan route:cache
7373
```
7474

75+
(optional) Add following middleware to your API, so that the sql logs, model events are captured.
76+
77+
`app/Http/Kernel.php`
78+
79+
```sh
80+
'api' => [
81+
...
82+
\Rakutentech\LaravelRequestDocs\LaravelRequestDocsMiddleware::class,
83+
... and so on
84+
85+
```
86+
7587
# Usage
7688
7789
## Dashboard

config/request-docs.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
return [
4+
'enabled' => true,
45
// change it to true will make lrd to throw exception if rules in request class need to be changed
56
// keep it false
67
'debug' => false,

phpstan.neon

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ parameters:
1313
# ignoreErrors:
1414
# - '#PHPDoc tag @var#'
1515
#
16-
# excludePaths:
17-
# - ./*/*/FileToBeExcluded.php
16+
excludePaths:
17+
- ./*/*/LaravelRequestDocsMiddleware.php
1818

1919
checkMissingIterableValueType: false

src/LaravelRequestDocs.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,11 @@ public function appendRequestRules(Collection $docs): Collection
232232
try {
233233
$requestClassName = $namedType->getName();
234234
$reflectionClass = new ReflectionClass($requestClassName);
235-
$requestObject = $reflectionClass->newInstanceWithoutConstructor();
235+
try {
236+
$requestObject = $reflectionClass->newInstance();
237+
} catch (Throwable $th) {
238+
$requestObject = $reflectionClass->newInstanceWithoutConstructor();
239+
}
236240

237241
foreach (config('request-docs.rules_methods') as $requestMethod) {
238242
if (!method_exists($requestObject, $requestMethod)) {

src/LaravelRequestDocsMiddleware.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,27 @@ class LaravelRequestDocsMiddleware extends QueryLogger
2727
*/
2828
public function handle(Request $request, Closure $next): Response
2929
{
30-
if (!$request->headers->has('X-Request-LRD') || !config('app.debug')) {
30+
if (!config('request-docs.enabled')) {
3131
return $next($request);
3232
}
3333

34+
if (!config('app.debug') && $request->headers->has('X-Request-LRD')) {
35+
$response = $next($request);
36+
$jsonContent = json_encode([
37+
'data' => $response->getData()
38+
]);
39+
$response->setContent($jsonContent);
40+
return $response;
41+
}
42+
43+
if (!config('app.debug')) {
44+
return $next($request);
45+
}
46+
if (!$request->headers->has('X-Request-LRD')) {
47+
return $next($request);
48+
}
49+
50+
3451
if (!config('request-docs.hide_sql_data')) {
3552
$this->listenToDB();
3653
}

src/LaravelRequestDocsServiceProvider.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public function configurePackage(Package $package): void
2626
public function packageBooted()
2727
{
2828
parent::packageBooted();
29+
if (!config('request-docs.enabled')) {
30+
return;
31+
}
2932

3033
// URL from which the docs will be served.
3134
Route::get(config('request-docs.url'), [\Rakutentech\LaravelRequestDocs\Controllers\LaravelRequestDocsController::class, 'index'])

ui/src/components/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function App() {
2828
const [showHead] = useLocalStorage('showHead', 'true');
2929

3030
const searchOptions = {
31-
keys: ['uri', 'docBlock'],
31+
keys: ['uri', 'doc_block'],
3232
threshold: 0.3
3333
};
3434

ui/src/components/elements/ApiActionInfo.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export default function ApiActionInfo(props: Props) {
1919
return (
2020
<div className="mockup-window border">
2121
<div className="p-5">
22-
{lrdDocsItem.docBlock && (
22+
{lrdDocsItem.doc_block && (
2323
<div className='text-sm mb-10 text-slate-500'>
2424
{/* eslint-disable-next-line react/no-children-prop */}
25-
<ReactMarkdown children={lrdDocsItem.docBlock} remarkPlugins={[remarkGfm]} />
25+
<ReactMarkdown children={lrdDocsItem.doc_block} remarkPlugins={[remarkGfm]} />
2626
</div>
2727
)}
2828
<table className="table table-fixed table-compact">

ui/src/libs/types.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface IAPIInfo {
1010
method: string;
1111
http_method: string;
1212
rules: IAPIRule;
13-
docBlock: string;
13+
doc_block: string;
1414
group: string;
1515
group_index: number;
1616
responses: string[];

0 commit comments

Comments
 (0)