gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:45:38 38 4
gpt4 key购买 nike

我开始学习 Swagger 。我正在尝试做同样的事情,这在“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。

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

最佳答案

在运行 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.

那是因为您必须在 Controller 中至少有一个方法,并带有描述路由的注释。
您可以轻松地在应用程序中创建资源来测试运行 php artisan make:controller ProjectsController -r 并将 Route::resource('projects', 'ProjectsController') 添加到 routes/web.php
创建 Controller 后打开它并在 index 方法之前添加以下 phpdoc 注释块,例如:
/**
* @OA\Get(
* path="/projects",
* @OA\Response(response="200", description="Display a listing of projects.")
* )
*/

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

关于swagger - 无法在 l5-swagger 中生成 API 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57645172/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com