首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在l5-swagger中生成API文档

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

Stack Overflow用户
提问于 2019-08-25 10:18:23
回答 1查看 18.2K关注 0票数 11

我开始学大摇大摆了。

我也在尝试做同样的事情,这是在一本书“Hands On Full Stack Web Range6和Laravel 5”一书中完成的。

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

在VS代码终端中有此异常:

代码语言:javascript
复制
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时,它会出现以下错误:

代码语言:javascript
复制
Failed to load API definition.
Fetch errorNot Found http://localhost:8081/docs/api-docs.json

我在码头内使用php bash。我的操作系统是Ubuntu18.04.3 LTS。

有人能帮我解决这个问题吗。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-01 18:39:43

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

代码语言:javascript
复制
/**
 * @OA\Info(title="My First API", version="0.1")
 */

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

代码语言:javascript
复制
 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')添加到routes/web.php中。创建控制器后,打开它并在index方法之前添加以下phpdoc注释块,例如:

代码语言:javascript
复制
/**
 * @OA\Get(
 *     path="/projects",
 *     @OA\Response(response="200", description="Display a listing of projects.")
 * )
 */

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

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57645172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档