Настройка
У интерфейса нет настроек на этапе сборки: спецификацию для отрисовки он определяет целиком в рантайме, по одному правилу с одним переопределением.
Одно правило, одно переопределение
| Source | When | Example |
|---|---|---|
GET /api-json | По умолчанию: совпадает с тем, что SwaggerModule.setup() из @nestjs/swagger публикует рядом со Swagger UI | https://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 должен покрывать несколько сервисов:
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 ведёт себя как раньше и никакого переключателя не рисует.