I just started with php and Slim framework. My main goal is to generate a RESTful API where I have a /swagger route where I show the API documentation using swagger ui.
This are the steps I followed:
- Install last version php
- Install composer
- Install required dependecies:
- composer require slim/slim:”4.*”
- composer require zircote/swagger-php
- Create API project (composer create-project slim/slim-skeleton testAPI)
- Anotate involved elements in my API
- Generate swagger file (.vendorbinopenapi -output .swagger.json .src)
- Add new route to my API:
use OpenApiGenerator as 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');
});};
But when I go and run the api and check /swagger route this is what I get:
{
"statusCode": 500,
"error": {
"type": "SERVER_ERROR",
"description": "WARNING: Required @OA\PathItem() not found"
}
}
Have I missed something? Or my OpenApiGenerator::scan([‘../swagger.json’]) does not make sense? I have seen people doing OpenApiGenerator::scan([‘.’]) but that gives me the exact same output.