Configurazione

La UI non ha configurazione a build-time: risolve la spec da renderizzare interamente a runtime, tramite una regola con un override.

Una regola, un override

SourceWhenExample
GET /api-jsonPredefinito: corrisponde a ciò che espone SwaggerModule.setup() di @nestjs/swagger accanto a Swagger UIhttps://api.example.com/docs → fetches https://api.example.com/api-json
?spec=<url>Query param: ha la precedenza sul default quando presentehttps://docs.example.com/?spec=https://api.example.com/api-json

CORS tra origini diverse

Se la UI è servita su un'origine diversa da quella dell'API, usa l'override ?spec= e assicurati che la configurazione CORS dell'API permetta a quell'origine di fare GET sul documento JSON.

Questa stessa questione di same-origin ritorna per l'esecuzione delle richieste: vedi Try it out per come il suo proxy aggira del tutto CORS, senza toccare la configurazione dell'API.

Più spec

Passa specs a DocfyUiModule.setup() per permettere agli utenti di passare tra più documenti OpenAPI senza lasciare la UI, utile quando un'istanza di docfy-ui deve coprire più servizi:

main.ts
DocfyUiModule.setup('/docs', app, {
  specs: [
    { name: 'Users service', url: 'https://users.example.com/api-json' },
    { name: 'Orders service', url: 'https://orders.example.com/api-json' },
  ],
});

Ogni url viene recuperato lato client esattamente come la spec predefinita /api-json (stessa origine o no, soggetto alla policy CORS di quell'origine). Un menu a tendina appare nella sidebar solo quando sono configurate due o più spec. Omettendo del tutto specs, docfy-ui si comporta esattamente come prima, senza switcher renderizzato.