From c1b7042faae0ab50bde2b2039912a5abe47b9038 Mon Sep 17 00:00:00 2001 From: Elson Vinicius de Souza Lopes Date: Tue, 1 Sep 2026 18:14:05 -0300 Subject: [PATCH] fix(swagger): serve Swagger sob /api/swagger, nao /swagger Em producao, o BFF/reverse proxy (LayoutParserReact/server) so encaminha /api/* para esta API - qualquer rota fora desse prefixo cai no catch-all do SPA React, que devolve a propria pagina de erro 404 do front em vez do Swagger. Confirmado em producao apos o deploy do PR #254: GET /swagger retornava a tela de erro do front-end, nao o Swagger UI. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01DcGnNut7qW3Zz5qEZxXPp6 --- Program.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Program.cs b/Program.cs index c463a8b2..207505a3 100644 --- a/Program.cs +++ b/Program.cs @@ -806,9 +806,16 @@ app.UseMiddleware(); // ✅ Swagger habilitado em todo ambiente (não só Development) — pedido explícito do dono - // para testar endpoints via Postman/Swagger UI direto em produção. - app.UseSwagger(); - app.UseSwaggerUI(); + // para testar endpoints via Postman/Swagger UI direto em produção. Servido sob /api/swagger + // (não /swagger) de propósito: em produção o BFF/reverse proxy (LayoutParserReact/server) + // só encaminha /api/* para esta API — qualquer rota fora desse prefixo cai no catch-all do + // SPA React e devolve a página de erro 404 do front, não o Swagger. + app.UseSwagger(c => c.RouteTemplate = "api/swagger/{documentName}/swagger.json"); + app.UseSwaggerUI(c => + { + c.RoutePrefix = "api/swagger"; + c.SwaggerEndpoint("/api/swagger/v1/swagger.json", "LayoutParserApi v1"); + }); // Enable detailed error pages in development if (app.Environment.IsDevelopment())