This commit is contained in:
JiriUhlir
2026-06-29 11:46:55 +02:00
parent f308a1bc29
commit e9d5f6bd36
5 changed files with 70 additions and 107 deletions
+12 -10
View File
@@ -50,19 +50,21 @@ HTTP API hlavičky:
Aplikace běží za AppFactory proxy na `/apps/<app-id>` (Caddy `handle_path` prefix před
předáním do containeru odstraní, takže container vidí routy bez prefixu a z requestu
veřejnou cestu nelze odvodit). Stejný přístup jako sousední služba `idoklad`:
veřejnou cestu nelze odvodit). Stejný přístup jako sousední služba `google-service`:
- OpenAPI dokument se servíruje **pod stejným `/docs` prefixem** jako UI na
`GET /docs/openapi.json` (plus alias `GET /openapi.json` pro přímý přístup).
- Swagger UI načítá dokument přes **relativní** endpoint `openapi.json`, takže se
v prohlížeči vyhodnotí jako `{prefix}/docs/openapi.json` lokálně i za proxy, bez
hardcodování `/apps/<app-id>`.
- `servers[0].url` se nastaví z `ROOT_PATH` (fallback hlavička `X-Forwarded-Prefix`,
nakonec `/`), takže Swagger `Try it out` volá `…/apps/<app-id>/api/<resource>`.
- `/docs` se servíruje **přímo jako HTML** (`GET /docs`), bez `swagger-ui-express` a bez
statického middleware proto **nevzniká žádný redirect `/docs` → `/docs/`**, který by za
proxy zahodil prefix `/apps/<app-id>` (to byla příčina bílé stránky).
- Swagger UI assety se načítají z CDN (`unpkg.com/swagger-ui-dist@5`).
- Spec URL je `ROOT_PATH + /openapi.json`, takže odkazuje na veřejné
`/apps/<app-id>/openapi.json`.
- `servers[0].url` se nastaví z `ROOT_PATH` (jinak `/`), takže Swagger `Try it out` volá
`…/apps/<app-id>/api/<resource>`.
| Kontrola | Lokálně (bez ROOT_PATH) | S `ROOT_PATH=/apps/sap-bo` |
|---|---|---|
| `GET /health` | 200 | 200 |
| `GET /docs` (Swagger UI) | 200 | 200 |
| `GET /docs/openapi.json` | 200 | 200 |
| `GET /docs` (Swagger UI) | 200, žádný redirect | 200, žádný redirect |
| `GET /openapi.json` | 200 | 200 |
| spec URL v `/docs` | `/openapi.json` | `/apps/sap-bo/openapi.json` |
| `servers[0].url` v OpenAPI | `/` | `/apps/sap-bo` |