Настройка

У интерфейса нет настроек на этапе сборки: спецификацию для отрисовки он определяет целиком в рантайме, по одному правилу с одним переопределением.

Одно правило, одно переопределение

SourceWhenExample
GET /api-jsonПо умолчанию: совпадает с тем, что SwaggerModule.setup() из @nestjs/swagger публикует рядом со Swagger UIhttps://api.example.com/docs → fetches https://api.example.com/api-json
?spec=<url>Параметр запроса: если он есть, побеждает значение по умолчаниюhttps://docs.example.com/?spec=https://api.example.com/api-json

CORS между разными origin

Когда интерфейс отдаётся с одного origin, а API живёт на другом, используйте переопределение ?spec= и убедитесь, что настройки CORS у API разрешают этому origin запрашивать JSON-документ методом GET.

Тот же вопрос про один origin всплывает и при выполнении запросов. В разделе Пробные запросы описано, как тамошний прокси обходит CORS целиком, не трогая настройки самого API.

Несколько спецификаций

Передайте specs в DocfyUiModule.setup(), чтобы пользователи переключались между несколькими документами OpenAPI, не выходя из интерфейса. Пригодится, когда один экземпляр docfy-ui должен покрывать несколько сервисов:

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' },
  ],
});

Каждый url запрашивается на клиенте ровно так же, как спецификация /api-json по умолчанию (с того же origin или нет, с учётом политики CORS этого origin). Выпадающий список появляется в боковой панели только при двух и более спецификациях. Если specs не передавать вовсе, docfy-ui ведёт себя как раньше и никакого переключателя не рисует.