Swagger - “未找到所需的 @OA\Info()”

sam*_*het 3 php swagger-php openapi

我刚刚进入 api 文档并尝试使用 Swagger

这是我的 php 文件,其中包含我想要记录的路由:

<?php

use OpenApi\Annotations as OA;

/**
 * @OA\Info(title="My First API", version="0.1")
 */
return [
    /**
     * @OA\Get(
     *     path="/api/v1/test",
     *     @OA\Response(response="200", description="An example resource")
     * )
     */
    'GET api/v1/test' => 'test/index',
];
Run Code Online (Sandbox Code Playgroud)

但是当我运行./vendor/bin/openapi api/config/routes.phpcli 时只输出错误:

Warning: Required @OA\Info() not found
Warning: Required @OA\PathItem() not found
openapi: 3.0.0
Run Code Online (Sandbox Code Playgroud)

然后我尝试了 Swagger2,效果很好

我使用dockerphp8.1镜像php:8.1-fpm-alpine、最新的zircote/swagger-php软件包和 Yii2 框架

小智 7

这是解决方案 https://github.com/DarkaOnLine/L5-Swagger/issues/443

添加您的基本控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

/**
 * @OA\Info(title="My First API", version="0.1")
 */
class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
Run Code Online (Sandbox Code Playgroud)