我刚开始使用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(['.']),但那给了我完全相同的输出。
1条答案
按热度按时间bhmjp9jg1#
通过使我的**/swagger**路由返回swaggerUI html解决了这个问题。为此,项目中必须有this文件夹。