在Slim上显示api路由的swagger



我刚开始使用php和Slim框架。我的主要目标是生成一个RESTful API,其中我有一个/swagger路由,其中我使用swagger ui显示API文档。

以下是我所遵循的步骤:
  • 安装最新版本php
  • 安装作曲家
  • 安装所需的依赖项:
    • 作曲家要求slim/slim:"4.*">
    • composer require zircote/swagger-php
  • 创建API项目(composer Create -project slim/slim-skeleton testAPI)
  • 注释我的API中涉及的元素
  • 生成swagger文件vendorbinopenapi -output .swagger。json。 src)
  • 添加新的路由到我的API:

使用OpenApiGenerator作为OpenApiGenerator;

/**
* @OAGet(
*     path="/openapi",
*     tags={"documentation"},
*     summary="OpenAPI JSON File that describes the API",
*     @OAResponse(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时route这是我得到的:
{
"statusCode": 500,
"error": {
"type": "SERVER_ERROR",
"description": "WARNING: Required @OA\PathItem() not found"
}
}
我错过什么了吗?或者我的OpenApiGenerator::扫描([' . ./swagger.json '])不明白吗?我看到有人这样做openapgenerator::scan(['.'])但这给了我完全相同的输出。

通过设置我的/swagger解决了这个问题路由返回swaggerUI html。为此,有必要在项目中创建这个文件夹。

最新更新