我刚进入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',
];但是,当我运行./vendor/bin/openapi api/config/routes.php时,cli只输出错误:
Warning: Required @OA\Info() not found
Warning: Required @OA\PathItem() not found
openapi: 3.0.0然后我尝试了Swagger2,它运行得很好
我正在使用来自php8.1的php:8.1-fpm-alpine停靠映像、最新的zircote/swagger-php包和Yii2框架
发布于 2022-03-15 09:45:57
原来openapi不是从我的子文件夹中自动添加类。
解决方案非常简单:从控制台应用程序内部生成文档(例如,我有一个php yii open-api/generate-docs命令)
这样,composer和yii2就加载了swagger所需的所有类。
您还必须将所有属性锚定在特定的类中,这样原始问题中的方法就无法工作;我的解决方案是创建一个已编译的路由器,每个路由都有一个具有php8.1属性的单独类。
发布于 2022-03-15 20:52:50
或者,您也可以将-b ./vendor/autoload.php添加到openapi命令中,以设置swagger-php的自动加载。
无论是哪种方式,我都感到惊讶的是,这种方法适用于swagger-php v4,因为这需要将注释锚定在结构元素(类、接口等)上。
这里的主要思想是注释您的实际控制器(或在您的框架中称为它的任何东西),因此处理请求的代码与实际代码非常接近。
发布于 2022-11-21 18:43:26
这是解决方案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;
}https://stackoverflow.com/questions/71468928
复制相似问题