arm*_*arz 5 php laravel swagger
我开始学习招摇。
我正在尝试做同样的事情,这在“使用 Angular 6 和 Laravel 5 进行全栈 Web 开发实践”一书中完成。
输入命令“ 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
Run Code Online (Sandbox Code Playgroud)
当我尝试打开 http://localhost:8081/api/documentation url 时,它给出了这个错误:
Failed to load API definition.
Fetch errorNot Found http://localhost:8081/docs/api-docs.json
Run Code Online (Sandbox Code Playgroud)
我在 docker 中使用 php-fpm bash。我的操作系统是 Ubuntu 18.04.3 LTS。
谁能帮我解决这个问题。谢谢!!!
小智 17
在运行之前,您必须在代码中添加一些注释php artisan l5-swagger:generate。首先,app/Http/Controllers/Controller.php在类声明之前添加如下的 phpdoc 注释块:
/**
* @OA\Info(title="My First API", version="0.1")
*/
Run Code Online (Sandbox Code Playgroud)
此注释本身足以解决您描述的问题,但如果您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.
Run Code Online (Sandbox Code Playgroud)
那是因为您必须在控制器中至少有一个方法,并带有描述路由的注释。您可以轻松地在您的应用程序中创建一个资源来测试运行php artisan make:controller ProjectsController -r和添加Route::resource('projects', 'ProjectsController')到routes/web.php. 创建控制器后打开它并在 index 方法之前添加以下 phpdoc 注释块,例如:
/**
* @OA\Get(
* path="/projects",
* @OA\Response(response="200", description="Display a listing of projects.")
* )
*/
Run Code Online (Sandbox Code Playgroud)
然后,php artisan l5-swagger:generate再次运行,您必须在终端中看到一条成功消息。
| 归档时间: |
|
| 查看次数: |
7839 次 |
| 最近记录: |