L5-swagger api 文档:获取错误必需的 @OA\PathItem() 未找到

Xav*_*vey 5 openapi

阅读 Stackoverflow 上的这两篇文章后: How to Solved ErrorException : required @OA\PathItem() not find Can't generated API Documentation in l5-swagger

Required @OA\PathItem() not found运行 php artisan l5-swagger:generate 后仍然出现错误。

这是我的 Controller.php 部分:

/**
 * @OA\Info(
 *     title="My First API Documentation",
 *     version="0.1",
 *      @OA\Contact(
 *          email="info@yeagger.com"
 *      ),
 * ),
 *  @OA\Server(
 *      description="Learning env",
 *      url="https://foo.localhost:8000/api/"
 *  ),
 */
class Controller extends BaseController
{
Run Code Online (Sandbox Code Playgroud)

这是我的 ProfileController 部分:

   /**
     * @OA\Get(
     *      path="/profiles",
     *      @OA\Response(
     *          response=200,
     *          description="Successful operation",
     *      ),
     *     @OA\PathItem (
     *     ),
     * )
     */
   function index()
    {
        return new ProfileCollection(Profile::with('user')->paginate());
    }
Run Code Online (Sandbox Code Playgroud)

我在这里忽略了什么?如果有人可以解释和帮助那就太好了:)

编辑 - 解决方案

出现问题是因为我使用的是 laravel 模块包,并且我必须更改 l5-swagger.php 配置文件中的一些代码:

'annotations' => [
                    base_path('Modules/Api/Http'), <-- changed the base path to the correct module
                ],
Run Code Online (Sandbox Code Playgroud)

然后,我将主 Controller.php 从 App/Http/Controllers 复制到同一模块,以消除@OA\Info() not found此后发生的错误。

aim*_*mme 7

当我第一次安装和配置时,我遇到了同样的错误。事实证明,仅 @OA\Info 不足以生成文档。除此之外,它还需要至少一个路径条目。添加 api 端点注释后,它得到修复。

例子:

/**
 * @OA\Get(
 *     path="/api/users",
 *     @OA\Response(response="200", description="An example endpoint")
 * )
 */
 public function getUsers() {
    ...
 }
Run Code Online (Sandbox Code Playgroud)


Ves*_*shi 0

根据迁移文档,您需要导入 Annotations 类use OpenApi\Annotations as OA;来解决您的问题。