Documentação de API com OpenAPI/Swagger

O PivotPHP gera documentação OpenAPI/Swagger automaticamente a partir das rotas registradas no Router — sem parsing de PHPDoc nem anotações. O responsável é o middleware ApiDocumentationMiddleware.

Habilitando

Registre o middleware com $app->use():

use PivotPHP\Core\Core\Application;
use PivotPHP\Core\Middleware\Http\ApiDocumentationMiddleware;

$app = new Application();

$app->get('/usuarios', function ($req, $res) {
    return $res->json(['usuarios' => []]);
});

$app->use(new ApiDocumentationMiddleware([
    'docs_path'    => '/docs',      // JSON OpenAPI 3.0.0
    'swagger_path' => '/swagger',   // Swagger UI
    'base_url'     => 'http://localhost:8080',
]));

$app->run();

Endpoints

  • GET /docs — especificação OpenAPI 3.0.0 em JSON.
  • GET /swagger — interface Swagger UI (carrega o Swagger UI do CDN unpkg).

Opções

Opção Padrão Descrição
docs_path /docs Caminho do endpoint JSON
swagger_path /swagger Caminho da Swagger UI
base_url http://localhost:8080 URL base usada em servers
version Application::VERSION Campo info.version
enabled true false desativa o middleware

O que é gerado

Cada rota registrada vira uma entrada básica de caminho (método HTTP + caminho) com uma resposta 200. Não há leitura de PHPDoc — anotações como @api, @param e @response são ignoradas. Para documentação rica (parâmetros, schemas, descrições), gere o spec manualmente.

Exemplo de saída

{
  "openapi": "3.0.0",
  "info": {
    "title": "PivotPHP API",
    "version": "2.3.4"
  },
  "servers": [
    { "url": "http://localhost:8080" }
  ],
  "paths": {
    "/usuarios": {
      "get": {
        "summary": "Route: get /usuarios",
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    }
  }
}