无法在l5-swagger中生成API文档

2024-03-04

我开始学习招摇了

我正在尝试做书上所做的同样的事情”使用 Angular 6 和 Laravel 5 进行全栈 Web 开发实践".

输入命令后使用 php-fpm bash "php artisan l5-swagger:generate"

我在 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。

谁能帮我解决这个问题。 谢谢你!!!


运行之前必须在代码中添加一些注释php artisan l5-swagger:generate。首先,转到app/Http/Controllers/Controller.php并在类声明之前添加如下 phpdoc 注释块:

/**
 * @OA\Info(title="My First API", version="0.1")
 */

此注释本身足以解决您所描述的问题,但是如果您执行php artisan l5-swagger:generate您将再次看到以下异常:

 ErrorException  : Required @OA\PathItem() not found

  at /home/nathanael/dev/laravel-projects/laravel-swagger/vendor/zircote/swagger-php/src/Logger.php:39
    35|         $this->log = function ($entry, $type) {
    36|             if ($entry instanceof Exception) {
    37|                 $entry = $entry->getMessage();
    38|             }
  > 39|             trigger_error($entry, $type);
    40|         };
    41|     }
    42| 
    43|     /**

  Exception trace:

  1   trigger_error("Required @OA\PathItem() not found")
      /home/nathanael/dev/laravel-projects/laravel-swagger/vendor/zircote/swagger-php/src/Logger.php:39

  2   OpenApi\Logger::OpenApi\{closure}("Required @OA\PathItem() not found")
      /home/nathanael/dev/laravel-projects/laravel-swagger/vendor/zircote/swagger-php/src/Logger.php:71

  Please use the argument -v to see more details.

这是因为控制器中必须至少有一个带有描述路由的注释的方法。 您可以轻松地在应用程序中创建资源来测试运行php artisan make:controller ProjectsController -r并添加Route::resource('projects', 'ProjectsController') to routes/web.php。 创建控制器后打开它并在index方法之前添加以下phpdoc注释块,例如:

/**
 * @OA\Get(
 *     path="/projects",
 *     @OA\Response(response="200", description="Display a listing of projects.")
 * )
 */

然后,运行php artisan l5-swagger:generate再次,您必须在终端中看到成功消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在l5-swagger中生成API文档 的相关文章

随机推荐