我开始学习趾高气扬了。
我正在尝试做同样的事情,这是在一本书中完成的“Hands-On Full Stack Web Development with Angular 6 and Laravel 5”。
在键入命令“php artisan l5-swagger:generate
“后使用php-fpm bash
我在VS Code终端中得到了这个异常:
root@8e6435be9103:/application# php artisan l5-swagger:generate
Regenerating docs
ErrorException : Required @OA\Info() not found
at /application/vendor/zircote/swagger-php/src/Logger.php:39
35| $this->log = function ($entry, $type) {
36| if ($entry instanceof Exception) {
37| $entry = $entry->getMessage();
> 39| trigger_error($entry, $type);
40| };
41| }
42|
43| /**
Exception trace:
1 trigger_error("Required @OA\Info() not found")
/application/vendor/zircote/swagger-php/src/Logger.php:39
2 OpenApi\Logger::OpenApi\{closure}("Required @OA\Info() not found")
/application/vendor/zircote/swagger-php/src/Logger.php:71
当我试图打开http://localhost:8081/api/documentation url时,它给出了这个错误:
Failed to load API definition.
Fetch errorNot Found http://localhost:8081/docs/api-docs.json
我在Docker内部使用php-fpm bash。我的操作系统是Ubuntu 18.04.3 LTS。
谁能帮我解决这个问题。谢谢你!!
2条答案
按热度按时间ljo96ir51#
在运行
php artisan l5-swagger:generate
之前,您必须在代码中添加一些注解。首先,转到app/Http/Controllers/Controller.php
,在类声明之前添加一个phpdoc注解块,如下所示:这个注解本身就足以解决您描述的问题,但是如果您再次执行
php artisan l5-swagger:generate
,您将看到以下Exception:这是因为在控制器中必须至少有一个方法,该方法带有描述路由的注解。您可以轻松地在应用程序中创建一个资源来测试
php artisan make:controller ProjectsController -r
的运行情况以及将Route::resource('projects', 'ProjectsController')
添加到routes/web.php
中。创建控制器之后,打开它,并在index方法之前添加以下phpdoc注解块,例如:然后,再次运行
php artisan l5-swagger:generate
,您必须在终端中看到成功消息。cgfeq70w2#
您可以使用此包在Laravel中完全自动生成swagger,而无需在代码中编写任何注解
https://github.com/hussein4alaa/laravel-g4t-swagger-auto-generate