php 在Slim上的API路线上显示霸气

xkftehaa  于 2022-12-10  发布在  PHP
关注(0)|答案(1)|浏览(111)

我刚开始使用php和Slim框架,我的主要目标是生成一个RESTful API,在那里我有一个/swagger路径,我使用swagger ui显示API文档。
以下是我遵循的步骤:

  • 安装最新版本的php
  • 安装编写器
  • 安装必需的依赖项:
    编写器需要slim/slim:“4."
    *composer需要zircote/swagger-php
  • 创建API项目(composer创建项目精简/精简框架testAPI
  • 在我的API中注解相关元素
  • 生成swagger文件**(.\供应商\bin\openapi -输出.\swagger.json.\src)**
  • 将新路由添加到我的API:
    使用OpenApi\生成器作为OpenApiGenerator;
/**
* @OA\Get(
*     path="/openapi",
*     tags={"documentation"},
*     summary="OpenAPI JSON File that describes the API",
*     @OA\Response(response="200", description="OpenAPI Description File"),
* )
*/

    $app->get('/swagger', function ($request, $response, $args) {
        $swagger = OpenApiGenerator::scan(['../swagger.json']);
        $response->getBody()->write(json_encode($swagger));
        return $response->withHeader('Content-Type', 'application/json');
    });};

但是,当我运行API并检查**/swagger**路线时,我得到的是:

{
    "statusCode": 500,
    "error": {
        "type": "SERVER_ERROR",
        "description": "WARNING: Required @OA\\PathItem() not found"
    }
}

我是不是错过了什么?或者我的OpenApiGenerator::scan(['../swagger.json'])没有意义?我见过有人做OpenApiGenerator::scan(['.']),但那给了我完全相同的输出。

bhmjp9jg

bhmjp9jg1#

通过使我的**/swagger**路由返回swaggerUI html解决了这个问题。为此,项目中必须有this文件夹。

相关问题